1

我有这个 IIS 重写规则

<rule name="Redirect rule for aliased Pages">
    <match url="^/pages/(.*)" />
    <action type="Redirect" url="{R:1}" />
</rule>

这个想法是它应该将http://mydomain.com/pages/about-us/重定向到http://mydomain.com/about-us/。根据 IIS 中的测试人员,在这种情况下,R:1 是 about-us/,但重定向总是转到http://mydomain.com//about-us/(参见双 //)。我尝试从匹配 URL 中删除两个正斜杠并将每个正斜杠单独保留,这似乎没有任何区别。

知道额外的 / 是从哪里来的吗?

4

1 回答 1

1

URL 重写模块在初始斜杠之后开始检查,因此以下将删除第一级文件夹“pages”:

<rule name="Redirect rule for aliased Pages">
  <match url="^pages/(.*)" />
  <action type="Redirect" url="{R:1}" />
</rule>

测试:

正如预期的那样。

请注意,如果您在单独的文件中有重写规则,则需要回收应用程序池或重新启动 IIS 以使更改生效。

此外,规则的顺序也很重要。

于 2013-09-30T15:49:16.203 回答