Я внедрил переписывание URL-адресов на уровне сервера, так как я хотел перенаправить все HTTP и HTTPS-запросы, которые соответствуют определенному правилу, на мой фактический сайт, а перенаправление должно выполняться только если пользователи попадают на мой фактический сайт. Сначала правила работают нормально. Однако повторное нажатие CTRL + R на моем фактическом сайте, как представляется, делает мой сайт недоступным. Ошибка «Эта страница не может быть отображена» затем возвращается пользователю. Этот тест был выполнен в браузере IE 11 на Windows x64, а мой веб-сервер - IIS 8.5 на Windows Server 2012 R2. Код ответа HTTP, возвращаемый для перенаправления, настроен как 307.URL Rewrite вызывает «Эта страница не может быть отображена»
Когда я включаю Fail Request Routing на моем сервере IIS, я вижу предупреждение об ошибке REWRITE_DISABLED_KERNEL_CACHE в журналах неудачных запросов. Это было время, когда страница возвращает «Эта страница не может быть отображена».
Отключение моего правила перезаписи URL-адресов немедленно приведет к тому, что мои HTTP и HTTPS-сайты будут доступны еще раз, и я подтвердил, что перенаправление больше не работает. Включение этого же правила после этого, но только на моем сайте HTTPS, будет работать.
Как следует это мое правило
<system.webServer>
...
<rewrite>
<globalRules>
<clear />
<rule name="HTTPS to HTTP" enabled="true" stopProcessing="true">
<match url="^(downloads?/?)?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_URI}" pattern="http://.*?/downloads/" negate="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/downloads/" appendQueryString="false" redirectType="Temporary" />
</rule>
</globalRules>
<outboundRules>
</outboundRules>
</rewrite>
...
</system.webServer>
Перенаправление В принципе, если запрос попадает любой из следующих примеров URL-адресов, я перенаправлять их:
не будет перенаправлять, если запрос попадает мой сайт прямо:
Когда Я попал на мой фактический сайт, я понимаю, что r правило эдирекции все еще применяется. Поэтому я подозреваю, что здесь могут быть две разные проблемы.
1) Бесконечное правило перенаправления применяется, когда запросы направляются http://fqdn/downloads/
2) Какая-то неизвестная проблема с REWRITE_DISABLED_KERNEL_CACHE
Wao вы спасатель жизни! Но я немного изменился. Вместо использования REQUEST_URI я переключился на использование URL-адреса, поэтому, по крайней мере, я использую переменную, которая более хорошо документирована. –
@louisxie, поскольку нет строки запроса, это хороший вызов. –
По какой-то причине новое правило не успешно перенаправляет https: /// и https: // /на мой предполагаемый сайт. Это связано с тем, что IIS оценивает условие {URL}, применяемое как true, но условие {HTTPS} является ложным. Поэтому я удалил все применяемые условия и заменил его –