ASP.net URL переписать силу строчные - PullRequest
2 голосов
/ 23 сентября 2011

у меня есть:

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

Перми перенаправления просто 301 перенаправляет на новый URL.

Это правило предназначено для перенаправления любого 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 Ответ

1 голос
/ 23 сентября 2011

Вы можете либо изменить регулярное выражение, чтобы исключить файлы .ashx (что может быть очень сложно), либо создать новое правило перед этим правилом, которое будет перехватывать URL-адреса, указывающие на файлы Ashx, и перенаправлять их в строчную версию строки.

Примерно так может работать (не проверено):

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

Он использует правило предпросмотра, чтобы проверить, является ли ".ashx" частью URL-адреса, и является ли URL-адрес прописным. Если да, он перенаправляет на строчную версию того же URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...