我正在使用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}®ion={R:2}" />
</rule>
</rules>
我不确定我是否希望该操作是重写或重定向,但该模式无论如何都无法正常工作。非常感谢任何帮助
答案 0 :(得分:1)
在评论中回答我的问题:
此规则是在站点根目录web.config还是子目录web.config中?
@Kev在子目录中:“/ partners”
来自文档:
引用:
请注意,传递给分布式规则的输入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}
字符的内容,我不确定您是否打算这样做是否存在。