【发布时间】: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>
我做错了什么?
【问题讨论】:
标签: exception redirect iis url-rewriting