#iis-10 #url-rewrite-module
#iis-10 #url-rewrite-module
Вопрос:
Я использую IIS10 и перезапись URL, и по какой-то причине на моем веб-сайте есть цикл перенаправления, но ТОЛЬКО на мобильных устройствах. Независимо от того, какой мобильный телефон, к какой сети он подключен или сколько раз я очищаю кэш, сайт не будет загружаться ни в одном браузере для любого мобильного устройства. Я тестировал с использованием iphone, Android, chrome, firefox, safari, все то же самое.
Вот мои правила в web.config
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^example.com$" negate="true" />
<add input="{HTTP_HOST}" pattern="^(.*).example.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://example.com/{R:1}" />
</rule>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
У меня есть другие веб-сайты, размещенные на том же компьютере с аналогичными правилами перезаписи URL, которые работают нормально, без проблем.
Даже если все мои правила отключены, я все еще получаю цикл перенаправления на мобильных устройствах.
Любые инструменты, советы / рекомендации по устранению неполадок будут высоко оценены!
ОБНОВЛЕНИЕ: информация от Fiddler
Необработанный:
HTTP/1.1 301 Moved Permanently
Cache-Control: private
Content-Type: text/html; charset=utf-8
Location: http://example.com/
X-Redirect-Reason: Wrong Portal Alias Requested
Set-Cookie: dnn_IsMobile=True; path=/; HttpOnly
Set-Cookie: language=en-US; path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Date: Thu, 29 Oct 2020 13:19:56 GMT
Content-Length: 142
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://example.com/">here</a>.</h2>
</body></html>
Заголовки:
**Response Headers**
HTTP/1.1 301 Moved Permanently
**Cache**
Cache-Control: private
Date: Thu, 29 Oct 2020 13:19:56 GMT
**Cookies/Login**
Set-Cookie: dnn_IsMobile=True; path=/; HttpOnly
Set-Cookie: language=en-US; path=/; HttpOnly
**Entity**
Content-Length: 142
Content-Type: text/html; charset=utf-8
**Miscellaneous**
X-Redirect-Reason: Wrong Portal Alias Requested
**Security**
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
**Transport**
Location: http://example.com/
Я вижу Wrong Portal Alias Requested
, но не уверен, что может вызвать это?
Комментарии:
1. Попробуйте открыть личную вкладку браузера на тестовом мобильном устройстве, так как ваши предыдущие попытки могут быть кэшированы и привести к таким проблемам.
2. Привет, Лекс, я уже делал это на разных устройствах, подключенных к моему маршрутизатору и сотовой сети. У меня также были другие люди в разных местах, которые тестировали свои устройства и сети, и это тот же результат.
3. Затем вам нужно использовать такой инструмент, как Fiddler, для сбора фактического трафика мобильного браузера, docs. telerik.com/fiddler/Configure-Fiddler/Tasks /… а потом увидеть от этого что-нибудь странное.
4. не могли бы вы поделиться привязками вашего сайта? вы установили какой-либо другой код на своем сайте для перенаправления? какой сертификат вы используете? вы применяли это правило на уровне сервера или сайта? не могли бы вы поделиться своим результатом отслеживания неудачных запросов?
5. @JalpaPanchal Я вскоре опубликую результаты отслеживания неудачных запросов, другого перенаправляющего кода нет, SSL является шаблонным SSL, и у меня много привязок на веб-сайте, я создам несколько примеров, чтобы показать вам.
Ответ №1:
Спасибо LexLi, который заставил меня смотреть в правильном направлении. Fiddler был очень полезен.
Да, веб-сайт создан на основе приложения DNN CMS, проблема заключалась в том, что в DNN есть таблица portalsettings
с параметром, который называется DefaultPortalAlias
«в этом параметре было неверное значение».
Кроме того, в PortalAlias
таблице DNN есть bit
поля для IsPrimary
и там IsPrimary
в моем случае была установлена www.
версия псевдонима non-www.
, а не каноническое правило перезаписи моего URL в IIS указывало на non-www.
привязку, это и вызвало цикл. Я не уверен, почему это влияло только на мобильные устройства, но теперь оно работает после этих изменений.
Спасибо @Lex Li за информацию!