2011-09-23 132 views
2

我:ASP.net URL重寫力小寫

<!-- Force lowercase URLS --> 
<rewrite url="~/(.*[A-Z]+.*)$" to="~/handlers/permredirect.ashx?URL=${lower($1)}" /> 

彼爾姆重定向只是301重定向到新的URL。

此規則旨在將任何帶有大寫char的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> 

回答

1

您可以修改正則表達式來排除.ashx的文件(這可能會變得非常複雜)或本規則之前創建一個新的規則,將捕獲的URL指向ASHX文件並將它們重定向到字符串的小寫版本。

像這樣的東西可能會奏效(未測試):

<rewrite url="~/(?=(.*\.ashx.*))(.*[A-Z]+.*)" to="~/${lower($1)}" /> 

它使用一個超前規則,以檢查是否「ashx的」是URL的一部分,如果URL是大寫的。如果是,它會重定向到同一網址的小寫版本。

+0

Ahhhh謝謝!該循環是由重定向到大寫permredirect文件 –

+0

Arg仍然不工作:(爲什麼我需要排除ASHX文件?我只是想要一個通用的規則重定向到任何大寫的URL到小寫 –