【发布时间】:2017-07-04 12:16:34
【问题描述】:
我在 web.config 文件中使用 RewriteMap 来 (301) 将旧 URL 重定向到新 URL。目前规则如下:
<rule name="Localhost Rewrite Rules" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.*\.)?example\.com$" />
<add input="{lhRewrites:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" appendQueryString="false" url="{C:1}" redirectType="Permanent" />
</rule>
请注意,该模式有意对域进行硬编码,因为这是特定于每个域名的更大规则集的一部分。所以我一般不打算优化或重写(请原谅双关语)规则。
rewriteMap.config 文件包含以下重定向:
<rewriteMap name="lhRewrites">
<add key="/old" value="/new" />
</rewriteMap>
目前,当我访问 http://example.com/old 时,该规则运行良好 - 它重定向到 http://example.com/new。
但是,当“旧”URL 包含尾部斜杠时,它不起作用,即http://example.com/old/。无论旧 URL 上是否存在斜杠,我都需要它工作。
我希望不必复制所有映射键。
非常感谢。
【问题讨论】:
标签: .net redirect web-config url-rewrite-module rewritemap