【问题标题】:non-www with trailing slash 301 redirect in web.config (Single Redirect)web.config 中带有斜杠 301 重定向的非 www(单重定向)
【发布时间】:2015-07-13 20:55:35
【问题描述】:

我怎样才能将我的 URL 301 重定向到最后的 non-www equivalent with trailing slash,而只有 单个 301 重定向(避免重定向链)?我正在使用 ASP.net 4.5 / C# / Web 项目,我的路由在 RouteConfig.cs 中注册。

一种选择是检查每个页面背后代码中的 URL 并重建 URL,但我更喜欢让 IIS 使用重写规则来处理它。

从这张图片中可以看到(通过 chrome,客户端),有两个 301 重定向,因为在我的 web.config 中我有两条规则,一条用于更改为小写 URL,第二条用于添加尾部斜杠。

也许 IIS 中有一个选项可以防止重定向,直到所有 URL 重写都在内部运行。我搜索了它,但还没有找到解决方案。

【问题讨论】:

    标签: c# asp.net url-rewriting web-config


    【解决方案1】:

    在 web.config 中(你需要安装 IIS URL Rewrite 模块)

       <system.webServer>
            <rewrite>
                <rules>
                    <rule name="noslash" patternSyntax="ECMAScript" stopProcessing="true">
                        <match url=".+[^\/]$" />
                        <conditions logicalGrouping="MatchAny">
                            <add input="{HTTP_HOST}" pattern="www.yourdomain.com" />
                            <add input="{HTTP_HOST}" pattern="yourdomain.com" />
                        </conditions>
                        <action type="Redirect" url="http://yourdomain.com/{R:0}/" />
                    </rule>
                    <rule name="www" patternSyntax="ECMAScript" stopProcessing="true">
                        <match url=".+\/$" />
                        <conditions logicalGrouping="MatchAny">
                            <add input="{HTTP_HOST}" pattern="www.yourdomain.com" />
                        </conditions>
                        <action type="Redirect" url="http://yourdomain.com/{R:0}" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    

    EDIT2:如果不存在,则在 url 末尾添加斜杠

    【讨论】:

    • 谢谢,但我认为这仅适用于 www 到非 www,尾部斜杠不计入单个重定向中。
    • 我已经编辑了重定向 URL,现在它添加了尾部斜杠
    • 是的,但是添加的斜杠只有在 url 有 www 时才会发生。如果 URL 没有 www,则不会附加斜杠。
    • 我再次编辑,现在它将为带有或不带有 www 的 URL 添加斜杠,并且不会触及没有 www 和带有斜杠的 URL
    • 我在 IIS 中构建的这些规则用于强制斜线和规范化 URL,问题是当应用两个规则时,它会在客户端导致两个 301 重定向(参见我添加到我的问题中的图像)。我希望 IIS 在提交正确的重写 URL 之前处理所有重写规则。
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2018-05-01
    • 2014-04-09
    • 2022-03-04
    相关资源
    最近更新 更多