帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  windows2008+iis7 模块化安装实现UrlRewrite(Intelligencia.UrlRewriter.dll)

windows2008+iis7 模块化安装实现UrlRewrite(Intelligencia.UrlRewriter.dll)

2018-06-07 14:06:36 3430

windows2008+iis7 模块化安装实现UrlRewrite(Intelligencia.UrlRewriter.dll)

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

特别注意:

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


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: