说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用

12345.html

替换

show.aspx?id=12345这样的地址访问

也可以实现百度空间的

http://hi.baidu.com/wu1987116

替换

http://hi.baidu.com/index.aspx?UserName=wu1987116

功能,支持任意扩展名及无扩展

程序要调整的部分只有两块。
一是web.config文件。
二是链接地址。
所需urlrewrite.dll

首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi

下载安装后再bin目录下找到URLRewriter.dll文件

好了开始实施。
第一步:将urlrewrite.dll下载到你的web程序目录里去。哪都行。我是放在bin里面的。然后添加引用,将urlrewrite.dll引用进来。
第二步:修改web.config
这一步要修改几个地方。要注意位置是不同的

1 在web.config文件中加入如下代码,注意要放在<configuration>下面, <appSettings/>
<connectionStrings/> <system.web>上面不然会出错

<configSections>
    <section name="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>

其中

<section name="RewriterConfig" 
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中

2 在web.config文件中的system.web节点下加入如下代码

<httpHandlers>
      <add verb="*" path="*.html"
            type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*"
            type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
   </httpHandlers>

这段代码的意思是:将文件扩展名为.html和任意扩展名(包括无扩展名,不包括*.html,因为这个位置在上面会先处理)的文件的所有 HTTP 请求映射到类 URLRewriter.RewriterFactoryHandler,注意顺序,按从上到下执行,如果path="*"在上面的话,则下面的html映射则无效,下面步骤中有映射到那个页面的设置

3 重写url

和1一样 ,同样是放在<configuration>节点下面

关键就是

<RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/(.+).html</LookFor>
        <SendTo>~/Shownews.aspx?ShowID=$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/(.+)</LookFor>
        <SendTo>~/blog.aspx?UserName=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>

效果:当访问http://127.0.0.1/123.html时,实际访问的是http://127.0.0.1/Shownews.aspx?ShowID=123

访问http://127.0.0.1/任意字符时,实际访问的是http://127.0.0.1/blog.aspx?UserName=任意字符

注意第2,3步中的映射顺序

其中关键在url的转换

<LookFor>~/(.+).html</LookFor>

<SendTo>~/Shownews.aspx?ShowID=$1</SendTo>

意思是把第一个路径转成另一个路径。其中<LookFor>()中的正则表达式就是第二句中的参数$1 .

同样也可以用$2 $3来表示<LookFor>中第二 第三个()中的参数。

多个参数:

<ReWriterUrls>
          <rule>
               <old>(.*)/TestUrlRe/file(.*)/(.*)\.html</old>
               <new>../WebForm1.aspx?id=$2&amp;type=$3</new>
          </rule>
          <rule>
               <old>(.*)/TestUrlRe/t(.*)/(.*)\.html</old>
               <new>../WebForm1.aspx?tid=$2&amp;ttype=$3</new>
          </rule>
</ReWriterUrls>

第三步:在页面程序中可以这样写:
<a href="news_<%=newsid%>.html" target="_blank">新闻标题</a>

完成上面三个步骤就可以轻松实现URL重写了,不过需要注意的是:如果发布网站的话,你会发现你的URL重写有可能会失效,如果失效的话就需要您设置一下IIS:
打开IIS,主目录-〉配置-〉映射-〉点击“插入”通配符应用程序映射-〉选择“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,然后把勾选去掉(一定要去掉),然后确定。
上面设置完毕之后,就可以正常浏览了。

(转)Asp.NetURL重写的一种方法的更多相关文章

  1. 【转】【Asp.Net】Asp.net发送邮件的两种方法小结

    这几天看了一下Asp.net发送邮件方面的东西,记得之前的IIS6上有SMTP服务器,可以直接利用这个进行邮件发送,现在的开发环境是Windows 7,找了半天没有找到,到网络上查了才知道原来wind ...

  2. asp.net 重定向的三种方法

    1.Server.Transfer("URL"): 服务器停止解析本页,保存此页转向前的数据后,再使页面转向到newPage.aspx, 并将转向前数据加上newPage.aspx ...

  3. ASP 连接 MySQL 数据库两种方法

    一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connecto ...

  4. ASP.netMVC文件下载的几种方法

    第一种:最简单的超链接方法,标签的href直接指向目标文件地址,这样容易暴露地址造成盗链,这里就不说了 第二种:后台下载 在后台下载中又可以细分为几种下载方式 首先,在前台,我们需要一个标签 &quo ...

  5. Asp.Net Session的三种方法及Web.Config设置

    转载:http://user.gw-ec.com/login/safelog/redirectt?session=so%2f%2bSjyZURMOe54xgk%2bUhL2CgGqDjOKEbYwZS ...

  6. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  7. 【转】asp.net导出数据到Excel的三种方法

    来源:http://www.cnblogs.com/lishengpeng1982/archive/2008/04/03/1135490.html 原文出处:http://blog.csdn.net/ ...

  8. ASP.NET MVC 实现AJAX跨域请求的两种方法

    通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据的加载,例如Google. 在ASP.NET MVC 框 ...

  9. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

随机推荐

  1. .NET平台上的Memcached客户端介绍(Memcached Providers)

    早上接到一个任务,需要对Linux服务器的Memcached的update操作进行性能测试,我发现我是一个典型的“手里拿着锤子,就把所有问题都当成钉子”的人.我第一个念头就是,上Memcached的官 ...

  2. SQL Server查询性能优化——覆盖索引(二)

    在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等 ...

  3. 【原】Spark中Client源码分析(二)

    继续前一篇的内容.前一篇内容为: Spark中Client源码分析(一)http://www.cnblogs.com/yourarebest/p/5313006.html DriverClient中的 ...

  4. 【原】Comparator和Comparable的联系与区别

    1.知识点了解 Comparator和Comparable都是用用来实现集合中元素的比较.排序的,所以,经常在集合外定义Comparator接口的方法和集合内实现Comparable接口的方法中实现排 ...

  5. Android Fragment 基本介绍[转]

    Fragment Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的 ...

  6. Git提交引用和引用日志

    转载自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.5-Git%E6%8F%90%E4%BA%A4%E5%BC%95%E7%94%A8%E5%9 ...

  7. Hadoop学习记录(3)|HDFS API 操作|RPC调用

    HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...

  8. HW4.3

    public class Solution { public static void main(String[] args) { final double POUND_PER_KILOGRAM = 2 ...

  9. LeetCode:Restore IP Address

    93. Restore IP Addresses Given a string containing only digits, restore it by returning all possible ...

  10. POJ-3648 Wedding 2sat

    题目链接:http://poj.org/problem?id=3648‘ 题意:一对情人举行婚礼,有n对夫妇参加,别人对着坐在一个长桌子的两边,新娘和新郎坐在最后面,新娘只能看见坐在他对面的人.现在, ...