多个 web.config 重定向规则

Posted

技术标签:

【中文标题】多个 web.config 重定向规则【英文标题】:Multiple web.config redirect rules 【发布时间】:2012-05-07 18:04:26 【问题描述】:

我正在尝试进行 301 重定向,因为我已经更改了域。使用 windows 服务器并在 web.config 中添加以下规则。

 <rule name="redirectDomain" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Redirect" url="http://replacement-cost.net/R:1" redirectType="Permanent" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="HTTP_HOST" pattern="^(www.)?windshield-replacement-cost\.org$" />
                    </conditions>
              </rule>

只要新站点上的所有页面都具有相同的名称和文件结构,就可以正常工作...除了作为旧域根的页面之外。现在在http://replacement-cost.net/windshield-replacement-cost

是否可以编写另一个规则来仅重定向根目录?而让第二条规则重定向所有其他页面?可能是某种执行顺序?

基本上可以达到与此相同的结果

如果 ruleURLISROOT = true > 转到http://replacement-cost.net/windshield-replacement-cost

其他

使用上面的代码重定向

任何帮助将不胜感激。我花了很长时间才走到这一步!谢谢

【问题讨论】:

【参考方案1】:

这是新规则,应在现有规则之前添加

<rule name="redirect Root Domain" stopProcessing="true">
    <match url="^$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="HTTP_HOST" pattern="^(www.)?windshield-replacement-cost\.org$" />
    </conditions>
    <action type="Redirect" url="http://replacement-cost.net/windshield-replacement-cost" />
</rule>

这是你现有的规则

<rule name="redirectDomain" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="HTTP_HOST" pattern="^(www.)?windshield-replacement-cost\.org$" />
    </conditions>
    <action type="Redirect" url="http://replacement-cost.net/R:1" redirectType="Permanent" />
</rule>

【讨论】:

完美——先生,你是个传奇!

以上是关于多个 web.config 重定向规则的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 多个域名重定向,在web.Config中配置

Web.config 重定向

IIS 7.5伪静态文件web.config编写规则及301重定向方法

web.config重定向时,过滤掉指定的目录重定向

web.config 将非 www 重定向到 www

web.config将2个规则合并为1