Проблема IIS UrlRewrite - PullRequest
       47

Проблема IIS UrlRewrite

1 голос
/ 08 ноября 2010

Я использую плагин UrlRewrite IIS в течение месяца на нашей производственной площадке.

Я создал одно правило перенаправления с помощью предоставленного шаблона / мастера, в результате чего значение конфигурации следующее:

<rewrite>
    <rules>
        <rule name="CanonicalHostNameRule1" enabled="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^www\.mycompany\.com$" negate="true" />
            </conditions>
            <action type="Redirect" url="http://www.mycompany.com/{R:1}" />
        </rule>
    </rules>
</rewrite>

Он работал нормально до сегодняшнего утра, когда сайт начал из-за ошибки "слишком много перенаправлений". Насколько я знаю, ничего в конфигурации или инфраструктуре не изменилось.

Я отключил правило, и сайт снова заработал (хотя и без перенаправления).

Затем я снова включил правило, и теперь все работает, как ожидалось. Я не внес никаких изменений в правило, кроме как временно отключить его.

Есть идеи? Плагин глючит?

Ответы [ 3 ]

1 голос
/ 08 ноября 2010

Я бы порекомендовал настроить это:

http://learn.iis.net/page.aspx/467/using-failed-request-tracing-to-trace-rewrite-rules/

Это может помочь вам отследить проблему, если вы снова начнете получать ошибку "too many directs".

0 голосов
/ 30 марта 2017

Исправление ниже работало для меня.Я обнаружил, что мое правило перезаписи устарело.Другой домен изменил свою политику URL и теперь перенаправлял весь трафик с otherdomain.com на www.otherdomain.com

<action type="Rewrite" url="http://otherdomain.com/abc/{R:1}" />

на

<action type="Rewrite" url="http://www.otherdomain.com/abc/{R:1}" />

Видите ли вы разницу?Добавив «www», я вытеснил перенаправление другого домена.Я в основном просто выполнил их новую политику.

0 голосов
/ 13 марта 2013

Попробуйте этот другой код, который у меня есть в Интернете, и выполните отлично:

<rule name="Canonical Host Name" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^yourdomain\.com$" />
    </conditions>
        <action type="Redirect" url="http://www.yourdomain.com/{R:0}" redirectType="Permanent" />
    </rule>

Объяснение простое: сопоставьте любой URL-адрес, полученный для обработки.) без префикса Перенаправить на тот же домен с полным префиксом и поставить все URL.

Другие попытки были R: 1, но выход из некоторых основных URL и не запускаться.Образец от Руслани: http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx Я пытался использовать добавление www, но в конце концов использовал пример выше.

...