欢迎光临
我们一直在努力

windows2008+iis7 模块化安装实现UrlRewrite

建站超值云服务器,限时71元/月

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中的默认页面设置可能丢失,你可以在你的规则的最后加上这条规则,来保证默认页面的设置是对的。

如果你想支持多个默认页面的,规则如下:

<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……,也许这些是你不想转的页面。

特别注意:

站点的使用的地址池最好是.net的经典模式。不然就会出现首页可以正常其他内页都是加载404的情况。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » windows2008+iis7 模块化安装实现UrlRewrite
分享到: 更多 (0)