您的位置:首页 > 其它

利用URLRewriter.dll实现URL伪静态

2009-10-16 17:24 155 查看
参考前辈足迹,用URLRewriter.dll实现url伪静态挺简单的,演示下。
一、先换的要用到的URLRewriter.dll和URLRewriter.pdb两个文件(我以打包)
二、建立一个web网站,修改web.config如下

<?xml version="1.0"?>
2<configuration>
3 <configSections>
4 <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
5 </configSections>
6
7 <RewriterConfig>
8 <Rules>
9 <RewriterRule>
10 <LookFor>~/d(\d+)\.aspx</LookFor>
11 <SendTo>~/default.aspx?id=$1</SendTo>
12 </RewriterRule>
13 </Rules>
14 </RewriterConfig>
15 <system.web>
16 <httpHandlers>
17 <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
18 <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
19 </httpHandlers>
20 <compilation debug="true"/></system.web>
21</configuration>
22
其中
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

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

关键的是这两句
<LookFor>~/d(\d+)\.aspx</LookFor> 要查找的模式
<SendTo>~/default.aspx?id=$1</SendTo> 要用来替换模式的字符串

<LookFor>~/d(\d+)\.aspx</LookFor>表示,用户输入的url,d(\d+)\.aspx是 url中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,并以.aspx结尾。用户也可根据自己的需要自行设定)。
<SendTo>~/default.aspx?id=$1</SendTo>,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问defalutl.aspx并传入参数id,其值$1将用用户请求的文件名中的第一个数字来表示。
例如用户输入 hostname/d11.aspx,服务器会把他重写为http://hostname/default.aspx?id=11。换句话说用户输入http: //hostname/d11.aspx,实际访问的是http://hostname/default.aspx?id=11。这样就起到了隐藏真实文件名,并便于用户记忆的作用。

(一)、扩展名不变的重写:
重写规则:

<add name="RewritePhoto" virtualUrl="^~/(\d+).aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:(此配置应该为默认配置,但有的虚拟主机提供商修改了此配置)
网站->属性->目录->配置(G)...->映射->应用程序扩展->扩展名 .aspx ->编辑->"确认文件是否存在"复选框不选
(二)、伪静态重写,扩展名为.html等
重写规则:

<add name="RewritePhoto" virtualUrl="^~/(\d+).html"
rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />

IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
(三)、任意扩展名的重写 如:扩展名为.zxjay
重写规则:

<add name="Rewrite1" virtualUrl="^~/(\d+).zxjay"
rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />


IIS配置:同上
(四)、无后缀的重写
重写规则:

<add name="Rewrite1" virtualUrl="^~/(\d+)/Default.aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />


IIS配置:网站->属性->目录->配置(G)...->映射->通配符应用程序映射->插入
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
确认文件是否存在:不选
(五)、二级域名到多级域名的重写
(注意:由于条件的限制,该规则没有测试,理论上可以实现,如果有错误,请留言指正,谢谢!)
重写规则:

<add name="Rewrite1" virtualUrl="^http\://(.*).xianfen.net/Default.aspx"
rewriteUrlParameter="ExcludeFromClientQueryString"

destinationUrl="~/Default.aspx?ID=$1"

ignoreCase="true" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: