IIS Rewrite 模块中的 URL 重定向异常被忽略

Posted

技术标签:

【中文标题】IIS Rewrite 模块中的 URL 重定向异常被忽略【英文标题】:Exceptions in redirection in URL in IIS Rewrite module are ignored 【发布时间】:2015-04-03 19:33:55 【问题描述】:

我有一个新站点 https://www.NewSite.com,我希望将旧站点 https://www.OldSite.com 的所有流量重定向到我的新站点 https://www.NewSite.com/ 的根目录,但有一些例外。

例如,我希望 URL(以及其他)https://www.OldSite.com/noredirect 不被重定向并且其他的被重写。例如:

https://www.OldSite.com -> https://www.NewSite.com/ https://www.OldSite.com/library->https://www.NewSite.com/ https://www.OldSite.com/kb/ -> https://www.newsite.com/kb https://www.OldSite.com/kb/articles.aspx?id=45 -> https://www.NewSite.com/kb https://www.OldSite.com/noredirect -> https://www.oldsite.com/noredirect https://www.OldSite.com/noredirect/page.aspx -> https://www.oldsite.com/noredirect/page.aspx

因此,我在 IIS 的旧站点站点中编写了两条规则:

<rewrite>
<rules>
   <clear />
      <rule name="Rewrite To New Site" stopProcessing="true">
          <match url="/kb(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
          <action type="Rewrite" url="https://www.newsite.com/kb" />
      </rule>
      <rule name="Redirect to New Site" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="REQUEST_URI" pattern="(.*)/noredirect$" negate="true" />
          </conditions>
          <action type="Redirect" url="https://www.newsite.com" appendQueryString="false" />
      </rule>
  </rules>
</rewrite>

此规则只是将所有对我的旧站点的请求重定向到我的新站点的根目录,忽略异常和重写规则。同样的情况发生在:

<rule name="Redirect to New Site" stopProcessing="true">
              <match url="(.*)" />
              <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="REQUEST_URI" pattern="^/noredirect(.*)" negate="true" />
              </conditions>
              <action type="Redirect" url="https://www.newsite.com" appendQueryString="false" />
          </rule>

我做错了什么?

【问题讨论】:

【参考方案1】:

确保您已选中应用程序请求路由缓存下的“启用代理”。 你可以在这里找到一些关于它的信息: http://www.iis.net/learn/extensions/configuring-application-request-routing-%28arr%29/creating-a-forward-proxy-using-application-request-routing

祝你好运!

【讨论】:

以上是关于IIS Rewrite 模块中的 URL 重定向异常被忽略的主要内容,如果未能解决你的问题,请参考以下文章

IIS URL 重定向目录

IIS 配置Http重定向到Https

iis url 将 http 重定向到非 www https

IIS URL 重写模块:基于 QueryString 的重定向

解决IIS部署Vue项目路由重定向问题

IIS 7 上的条件 https 重定向