SmartRewrite组件配置规则


-> 配置文件SmartRewrite.ini:

 

      SmartRewrite通过WEB服务扩展完成URL请求的重定向和网址映射。在SmartRewrite.ini文件中,对每个需处理的站点均要按要求构建正确的url重写规则,当客户端发出http请求时,SmartRewrite根据对应规则将URL与正则表达式匹配,并对网址做相应的转换后将URL请求发送给IIS处理,完成网址的重定向。

   以下为 SmartRewrite.ini的配置示例(以域名url.com为例):

 

RewriteCond Domain:url.com
//定义一个域 url.com

RewriteRule ^(www.url.com/)$ /

//定义规则,用户请求http://www.url.com,访问的也是http://www.url.com,这一句必须有,且应放在最前面。

RewriteRule ^(www.url.com/index.html)$ /

//定义规则,与上一句相同,请求为http://www.url.com/index.html,访问的是http://www.url.com

RewriteRule ^({[A-Za-z0-9]+}.url.com/)$ /user/index.asp?uid=$0
//定义规则,中间一段为正则表达式构建的静态网址,最后一段为实际访问的动态网址。按上述规则,如用户的请求为http://best.url.com,实际访问的是http://www.url.com/user/index.asp?uid=best

RewriteRule ^({[A-Za-z0-9]+}.url.com/index.html)$ /user/index.asp?uid=$0

//定义规则,同上

RewriteRule ^(www.{[A-Za-z0-9]+}.url.com/)$ /info/index.asp?sort=$0

//定义规则,
RewriteRule /r{[0-9]+}/{[0-9]+}/topic/{[0-9]+}.html /detail.asp?id=$2
//每个匹配组由大括号{}引起来,组号从0组开始,后面的$2表示id取第二组的值。
如http://www.aaa.com/r01/11/topic/1234.html,实际访问的则是http://
www.aaa.com/detail.asp?id=1234。第0和1组在此仅从静态网址上体现一种虚拟目录结构。如不需该值可直接取$2的值即可。
RewriteRule /topic/{[0-9]+}.html /detail.asp?id=$0
......

RewriteCond Host:www.bbb.com
//定义主机www.bbb.com
RewriteRule /{[0-9]+}/{[0-9]+}/index.html /list.asp?code1=$0&code2=$1
。。。。。。

 

-> 注意的几个问题:

      1. 设计时建立的链接应相对于根,而不是相对于文档,如:/images/123.pic,否则有些链接可能不正确。      2. 规则修改后必须重新启动IIS。
      3. 在ABC_Rewrite.ini配置中可配置多个主机,IIS中需对所有使用ABC_Rewrite的相关站点配置筛选器,配置文件中两条规则之间不能加注释。
      4. 匹配规则的格式为:
          
RewriteRule 匹配表达式格式化表达式
          注:中间有空格
      5. 匹配组用大括号{}分隔,组号从0开始,因此取值次序 从$0-$N,当然可以直接取某一组的值,如上例中的id=$2。
      6. 每个主机的相关配置中较长的规则应放在该节的前面。
      

-> 试用版和正式版的区别(非常重要):

      1. 功能上没有区别,试用版最大处理请求数为200,超过重写组件将失去作用,除非IIS重启。
      2. 试用版和正式版均支持多个虚拟主机,支持多参数传递。

posted @ 2010-04-07 18:28  Me疯子_(~  阅读(174)  评论(0编辑  收藏  举报