使用重写模块IIS7重定向

时间:2012-03-07 22:13:09

标签: redirect iis-7 rewrite

我一直在从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" />

`

任何想法?

由于

1 个答案:

答案 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>