IIS重写URL正则表达式

时间:2014-01-21 00:03:52

标签: regex iis iis-7.5 url-rewrite-module

我正在使用IIS 7.5和UrlRewrite Module 2.我已经阅读了模块here的官方文档,以及关于SO的许多示例,并在Regexpal上测试了我的正则表达式。不知何故,转换到Web.config文件导致我的问题。我也尝试过逃避这些问题。

我正在使用的正则表达式是:

^partners/(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*)

一些示例网址:

partners/var/emea

partners/msp/apac/

partners/var/na/abcdabcdabcd

这是我到目前为止的web.config:

<rules>
  <rule name="partnersListing" enabled="true" stopProcessing="true">
    <match url="^partners/(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*)" />
    <action type="Rewrite" url="partnersList.aspx?type=${R:1}&region={R:2}" />
  </rule>
</rules>

我不确定我是否希望该操作是重写或重定向,但该模式无论如何都无法正常工作。非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

在评论中回答我的问题:

  

此规则是在站点根目录web.config还是子目录web.config中?

     

@Kev在子目录中:“/ partners”

来自文档:

  

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference?amp;clcid=0x409

引用:

  

请注意,传递给分布式规则的输入URL字符串始终是   相对于规则所在的Web.config文件的位置   定义。例如,如果发出请求   http://www.mysite.com/content/default.aspx?tabid=2&subtabid=3,和   重写规则在/ content目录中定义,然后规则获取   此URL字符串default.aspx作为输入。

基于此,您需要将您的网址匹配更改为:

^(var|distributors|msp|techpartners)/(na|emea|apac)(|/)(.*)

假设您的重写规则存在于:

http://example.com/partners/web.config

在后面引用$前面的重定向/重写网址中还有另外一个似乎是无关{R:1}字符的内容,我不确定您是否打算这样做是否存在。