繁体   English   中英

IIS URL 重写规则不适用于整个站点

[英]IIS URL rewriting rule not working for entire site

我的目标是将以下 URL 转发到新站点(需要完全匹配,因为我对 oldsite.com/test.aspx 有其他规则):

  • oldsite.com
  • oldsite.com/
  • www.oldsite.com
  • www.oldsite.com/
  • 例如,只有上面的(静态)我不想转发 oldsite.com/test.aspx

我用的是:

<rule name="Redirect" stopProcessing="true">
                    <match url="oldsite.com$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_HOST}" pattern="oldsite.com" />
                        <add input="{HTTP_HOST}" pattern="www.oldsite.com" />
                        <add input="{HTTP_HOST}" pattern="oldsite.com/" />
                        <add input="{HTTP_HOST}" pattern="www.oldsite.com/" />
                    </conditions>
                    <action type="Redirect" url="http://newsite.com" appendQueryString="false" />
                </rule>

我的规则不起作用,我想知道为什么

HTTP Host 标头从不包含/ ,因此以/结尾的{HTTP_HOST}条件是多余的。

<match url="oldsite.com$"另一方面只是意味着只匹配以oldsite.com结尾的路径(而不是 URL)。

例如:

  • http://whatever/something-oldsite.com匹配。
  • http://whatever/oldsite.com匹配。
  • http://whatever/oldsite.comA不匹配。
  • http://whatever/oldsite.co不匹配。

显然这不是你想要的。

此外,请记住,在正则表达式中,文字点字符 ( . ) 表示“与任何字符匹配”。 例如,这会意外地导致您的模式与诸如http://whatever/oldsiteZcom类的 URL 匹配。 当您寻找文字点时,请记住在模式中使用反斜杠转义点。

<match>元素的url属性在这里有点模棱两可,我一直想知道为什么微软选择这个名字,比如<match path="..你的困惑,我在那里。

无论如何,您正在寻找确切的空路径,因此您需要如下规则。

<rule name="Redirect" stopProcessing="true">
    <match url="^$" ignoreCase="false" /> <!-- path is empty, just starts (^) and ends ($), does not contain anything -->
    <conditions>
        <add input="{HTTP_HOST}" pattern="^oldsite\.com$" /> <!-- host name literally equals to oldsite.com -->
        <add input="{HTTP_HOST}" pattern="^www\.oldsite\.com$" /> <!-- host name literally equals to www.oldsite.com -->
    </conditions>
    <action type="Redirect" url="http://newsite.com" appendQueryString="false" />
</rule>

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM