windows2008+iis7 模块化安装实现UrlRewrite伪静态 - TOMMYHU - 专注互联网开发及运营技术,提供相关资料及软件下载,奇趣网络时事评论!
Mar 19

windows2008+iis7 模块化安装实现UrlRewrite伪静态 不指定

1. 安装UrlRewriter组件模块,安装完后会作为一个IIS功能模块在IIS管理器中能看到。        
(或者将组件拷贝用户网站目录下,这是另一种可实现URLWRITE的方式。将Bin文件夹下的文件添加到用户网站的Bin目录下,如果没有此目录,请在网站根目录下新建。(拷贝的文件包括:Intelligencia.UrlRewriter.dll,FormRewriterControlAdapter.dll)        
建议用模块化方式实现REWRITE,因为使用起来方便简单。          


2. 配置组件,用户自定义重写规则            
修改Web.Config文件,添加rewriter组件:            
1)添加 Configuration section handler:            
<configSections>            
<section name="rewriter"            
requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigura    tionSectionHandler, Intelli    gencia.UrlRewriter" />            
</configSections>

2)添加 UrlRewriter mapper HttpModule:
<system.webServer>          
<modules>          
<add type ="Intelligencia.UrlRewriter.RewriterHttpModule, Ielligencia.UrlRewriter"     name="UrlRewriter"/>          
</modules>          
</system.webServer>

3) 在 Web.Config的configuration结点中添加重写规则            
注:1.请先备份好原来的配置文件,如果出现问题,还可恢复;            
2.这里的重写规则需根据用户网站的需要添加,规则需有正则表达式知识的人员设置。            


例子:            
<rewriter>            
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />            
<rewrite url="~/lmh$" to="~/Users.aspx?user=lmh" processing="stop" />            
<rewrite url="~/tags/(.+)" to="~/tag/tagcloud.aspx?tag=$1" processing="stop"/>            
<rewrite url="^~/mypage(\?.+)?$" to="~/index.htm$1" processing="stop" />            
<rewrite url="^(.*)/(\?.+)?$" to="$1/index.htm$2?" />            
</rewriter>            

url是可以使用正则表达式的。比如上面的例子:            
规则一:当发现文件类型为 .gif, .png,.jpg, .ico, .pdf, .css or .js时,停止rewrite            
规则二:就是将/lmh重写到/Users.aspx?user=lmh,$在正则表达式中表示是串的结束,也就是说/lmhe是不会被重写到to后的地址的,如果把$去掉则可以。            
规则三:将tags/xxx重写为tag/tagcloud.aspx?Tag=xxx            
规则四:当用户输入错误象mypagexxx形式的地址时,转到网站默认页面            
规则五:设置用户网站的默认页面为index.htm            

4) Web.Config文件保存后即可生效            

5) URLrewrite 支持 asp,asp.net,php 等各种脚本.            

可能出现的问题:            
问题一:            
不少人在第一次使用URL重写时,会发现他们的图像和CSS样式表引用有时会停止工作。            

原因:            
这是因为他们在网页里有对这些文件的相对引用,当你开始在应用里重写URL时,你需要意识到浏览器经常会在不同的逻辑层次结构层上            
(logical hierarchy levels)请求文件,而不是实际存储在服务器上的东西。              

建议:            
1.网页中的引用的图片和文件的路径请采用绝对路径            


问题二:            
404错误(页面无法找到)            

原因:            
正则表达式设置错误或者没有设置相应的规则,可能会导致页面无法找到错误            

建议:            
1.修改重写规则            
2.刚开始设置时,可以先用几个简单的规则测试一下,看是否正常            


问题三:            
当用通配符处理页面请求以后,在IIS中的默认页面设置可能丢失,你可以在你的规则的最后加上这条规则,来保证默认页面的设置是对的。            
<rewrite url=”^(.*)/(\?.+)?$” to=”$1/default.aspx$2?” />            

如果你想支持多个默认页面的,规则如下:            
<if url=”^(.*)/(\?.+)?$”>            
<rewrite exists=”$1/default.aspx” to=”$1/default.aspx$2″ />            
<rewrite exists=”$1/index.aspx” to=”$1/index.aspx$2″ />            
<rewrite exists=”$1/index.html” to=”$1/index.html$2″ />            
</if>            
注意上面不要加太多的文件,因为检查文件是否存在比较耗费时间,写太多会影响性能。            

用户需注意的问题            
1.安装此组件后,可能会对网站的访问速度造成一定的影响。            
2.用户需用尽可能准确的重写规则,以避免产生意想不到的结果。比如上面的[规则二],如果你只想匹配lmh结尾的页面,就加上$,当然不加            
也可以达到目的,只是它还会匹配象lmha、lmhb、lmhc……,也许这些是你不想转的页面。  

▲返回顶部

Add a comment

Nickname

emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot