我一直在从IIS资源中执行以下文章的步骤,以便使用IIS7上的重写模块2.0设置永久重定向,使用模式捕获源URL并根据以下正则表达式提供目标。
http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module
来源(OLD)网址:http://xx.xx.xxx.xx/term/product/term-term/category/example-123/58276 模式:http://xx.xx.xxx.xx/term/([az] +)/([az-] +)/([az] +)/([0-9a-z-] +)/ ([0-9] +)
在IIS7中测试源URL的模式可以正常工作。如下所示的目标URL需要维护IP,然后是/ product,即R:1和/ 582276,即R:5
目标网址:http://xx.xx.xxx.xx/ {R:1} / {R:5} 因此,实际目的地(新)网址为http://xx.xx.xxx.xx/product/58276
但是,当使用浏览器时,上述操作无效,而是变得烦人的404。
我的web.config看起来像
`
<rules>
<rule name="PatternRedirect" stopProcessing="true">
<match url="http://xx.xx.xxx.xx/term/([a-z]+)/([a-z-]+)/([a-z]+)/([0-9a-z-]+)/([0-9]+)" />
<action type="Redirect" url="http://xx.xx.xxx.xx/{R:1}/{R:5}" />
</rule>
</rules>
</rewrite>
<httpRedirect enabled="true" destination="" exactDestination="true" httpResponseStatus="Permanent" />
`
任何想法?
由于
答案 0 :(得分:1)
模式匹配的输入值是URL的路径部分,不包括前导/
(正斜杠)。 match元素的url属性必须以“term”开头:
<match url="term/([a-z]+)/([a-z-]+)/([a-z]+)/([0-9a-z-]+)/([0-9]+)" />
如果要确保该规则仅适用于xx.xx.xxx.xx主机请求,请添加条件:
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^xx.xx.xxx.xx$" />
</conditions>