如何通过单个301重定向(避免重定向链)301将我的网址重定向到non-www equivalent with trailing slash
?我正在使用ASP.net 4.5 / C#/ Web Project,我的路由在RouteConfig.cs
。
一个选项是检查每个页面后面的代码中的URL并重建URL,但我更喜欢让IIS使用重写规则来处理它。
从这张图片中可以看到(通过chrome,客户端),有两个301重定向,因为在我的web.config中我有两个规则,一个用于更改为小写URL,另一个用于添加尾部斜杠。
可能在IIS中有一个选项可以防止重定向,直到所有URL重写都在内部运行。我搜索了它,但还没找到解决方案。
答案 0 :(得分:3)
在web.config中(您需要安装IIS URL重写模块)
<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:如果网址不存在,则在网址末尾添加尾部斜杠