我有:
<!-- Force lowercase URLS -->
<rewrite url="~/(.*[A-Z]+.*)$" to="~/handlers/permredirect.ashx?URL=${lower($1)}" />
Perm重定向只需301重定向到新网址。
此规则旨在将带有大写字符的任何URL重定向到小写字母。
然而,这会创建一个重定向循环,任何想法为什么?到目前为止,唯一的规则是:
<rewriter>
<!-- Remove Trailing Slash for all URLS-->
<rewrite url="~/(.*)/($|\?(.*))" to="~/handlers/permredirect.ashx?URL=${lower($1)}$2" />
<!-- Force lowercase-->
<rewrite url="~/(.*[A-Z]+.*)$" to="~/handlers/permredirect.ashx?URL=${lower($1)}" />
<rewrite url="~/construct2($|\?(.*))" to="~/construct2.aspx" processing="stop" />
</rewriter>
答案 0 :(得分:1)
您可以修改正则表达式以排除.ashx文件(可能会非常复杂)或在此规则之前创建新规则,这将捕获指向ashx文件的URL并将它们重定向到字符串的小写版本。
这样的事情可能有效(未经测试):
<rewrite url="~/(?=(.*\.ashx.*))(.*[A-Z]+.*)" to="~/${lower($1)}" />
它使用先行规则来检查“.ashx”是否是网址的一部分,以及网址是否为大写。如果是,则重定向到同一URL的小写版本。