C# web.config中带有尾随斜杠301重定向的非www(单重定向)
我怎样才能301重定向我的URL到C# web.config中带有尾随斜杠301重定向的非www(单重定向),c#,asp.net,url-rewriting,web-config,C#,Asp.net,Url Rewriting,Web Config,我怎样才能301重定向我的URL到非www等价物,并在末尾使用斜杠,只使用单个301重定向(避免重定向链)?我正在使用ASP.net 4.5/C#/Web项目,我的路线注册在RouteConfig.cs中 一种选择是在代码隐藏中检查每个页面的URL并重建URL,但我更喜欢让IIS使用重写规则来处理它 从这张图片(通过chrome,客户端)可以看到,有两个301重定向,因为在我的web.config中,我有两个规则,一个用于更改为小写URL,另一个用于添加尾部斜杠 也许IIS中有一个选项可以阻止
非www等价物,并在末尾使用斜杠
,只使用单个301重定向(避免重定向链)?我正在使用ASP.net 4.5/C#/Web项目,我的路线注册在RouteConfig.cs
中
一种选择是在代码隐藏中检查每个页面的URL并重建URL,但我更喜欢让IIS使用重写规则来处理它
从这张图片(通过chrome,客户端)可以看到,有两个301重定向,因为在我的web.config中,我有两个规则,一个用于更改为小写URL,另一个用于添加尾部斜杠
也许IIS中有一个选项可以阻止重定向,直到所有URL重写都在内部运行。我搜索了它,但还没有找到解决方案。在web.config中(您需要安装IIS URL重写模块)
EDIT2:如果web.config中不存在url,则在url末尾添加尾随斜杠(您需要安装IIS url重写模块)
EDIT2:如果web.config中不存在url,则在url末尾添加尾随斜杠(您需要安装IIS url重写模块)
EDIT2:如果web.config中不存在url,则在url末尾添加尾随斜杠(您需要安装IIS url重写模块)
EDIT2:如果url不存在,则在url末尾添加尾随斜杠谢谢,但我认为这仅适用于从www到非www,尾随斜杠不包含在帐户中,也不包含在单个重定向中。我已经编辑了重定向url,现在它添加了尾随斜杠,但添加的斜杠仅在url包含www时才会出现。如果url没有www,它不会附加尾随斜杠。我再次编辑过,现在它会为带有或带有www的URL添加尾随斜杠,并且不会接触没有www和带有斜杠的URL。我在IIS中构建的这些规则用于强制斜杠和规范化URL,问题是当应用两个规则时,会在客户端导致两个301重定向(参见我添加到问题中的图片)。我希望IIS在提交正确的重写URL之前处理所有重写规则。谢谢,但我认为这仅适用于www到非www,尾随斜杠不包含在帐户中,也不包含在单个重定向中。我已编辑了重定向URL,现在它添加了尾随斜杠,但添加的斜杠仅在URL包含www时才会出现。如果URL没有www,它不会附加尾随斜杠。我再次编辑过,现在它会为带有www或带有www的URL添加尾随斜杠,并且不会接触没有www和带有斜杠的URL。我在IIS中构建了这些规则,用于强制斜杠和规范化URL,问题是当应用两个规则时,它会在客户端导致两个301重定向(参见我添加到问题中的图片)。我希望IIS在提交正确的重写URL之前处理所有重写规则。谢谢,但我认为这仅适用于www到非www,尾随斜杠不包含在帐户中,也不包含在单个重定向中。我已编辑了重定向URL,现在它添加了尾随斜杠,但添加的斜杠仅在URL包含www时才会出现。如果URL没有www,它不会附加尾随斜杠。我再次编辑过,现在它会为带有www或带有www的URL添加尾随斜杠,并且不会接触没有www和带有斜杠的URL。我在IIS中构建了这些规则,用于强制斜杠和规范化URL,问题是当应用两个规则时,它会在客户端导致两个301重定向(参见我添加到问题中的图片)。我希望IIS在提交正确的重写URL之前处理所有重写规则。谢谢,但我认为这仅适用于www到非www,尾随斜杠不包含在帐户中,也不包含在单个重定向中。我已编辑了重定向URL,现在它添加了尾随斜杠,但添加的斜杠仅在URL包含www时才会出现。如果URL没有www,它不会附加尾随斜杠。我再次编辑过,现在它会为带有www或带有www的URL添加尾随斜杠,并且不会接触没有www和带有斜杠的URL。我在IIS中构建了这些规则,用于强制斜杠和规范化URL,问题是当应用两个规则时,它会在客户端导致两个301重定向(请参阅我添加到问题中的图像)。我希望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>