【发布时间】:2015-09-09 01:29:45
【问题描述】:
好的,所以我最近一直在使用 IIS Url Rewrite,发现它很棒,但是我遇到了一些令人困惑的行为。
首先让我告诉你我想要完成什么:
/{word1}/{id}-{word2}
301 to
/{newWord1}/{id}-{word2}
现在让我告诉你我第一次尝试的规则:
<rule name="Hub Page Redirect" stopProcessing="true">
<match url="/service/([0-9]+)\-([^/]+/?)$" />
<action type="Redirect" url="/hubs/{R:1}-{R:2}" />
</rule>
如您所见,我只匹配 URL 的特定结构,然后使用匹配中的一些捕获组重定向到自定义 url。这仅适用于以下结构(示例如下):
/service/1460-berkshire
在末尾添加斜线时不起作用?但是,当我将规则更改为以下内容时:
<rule name="Hub Page Redirect" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{URL}" pattern="/service/([0-9]+)\-([^/]+/?)$" />
</conditions>
<action type="Redirect" url="/hubs/{C:1}-{C:2}" />
</rule>
一切正常吗?我所做的只是匹配我匹配的任何特定 url,然后通过条件匹配。条件模式与我最初用于匹配 URL 的模式相同。
为什么我的第一条规则没有完全奏效?
【问题讨论】:
标签: .net regex iis rewrite iis-8