После некоторых недавних изменений (см. ниже) URL https: //mysite.tld работает нормально до тех пор, пока каждые 3-6 часов httpstatus.io не начинает сообщать об 11 перенаправлениях (однако он не детализирует эти перенаправления, он просто говорит «URL-адрес не работает должным образом» или что-то в этом роде) . Всегда 11.
Он разрешается в течение 1-5 минут, снова сообщая о 0 перенаправлениях, или, если я повторно использую соответствующий пул приложений или редактирую файл web.config каким-либо образом, проблема решается немедленно.
Кто-нибудь видел это или что-то подобное раньше? Как я могу отлаживать дальше?
Предпосылки
Проблема началась после установки сертификата от Let's Encrypt и перемещения сайта с незащищенного www на защищенный без www на уникальном IP. Я также добавил второй сертификат к FTP-серверу.
Заголовки ответа, когда он работает:
Cache-control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:no-cache
Content-type:text/html; charset=UTF-8
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Server:Microsoft-IIS/7.5
X-powered-by:PHP/5.6.2
X-pingback:https://mysite.tld/wordpress/xmlrpc.php
Link:https://mysite.tld/wp-json/; rel="https://api.w.org/", <https://mysite.tld/>; rel=shortlink
Set-cookie:PHPSESSID=8kshloboqs5gdh05ej026s5df3; path=/
Date:Fri, 30 Sep 2016 11:28:37 GMT
Connection:close
Content-length:54191
Мой web.config содержит следующие перенаправления:
<rule name="Redirect to non-www" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite\.tld$" negate="true" />
</conditions>
<action type="Redirect" url="https://mysite.tld/{R:1}" />
</rule>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://mysite.tld/{R:1}" redirectType="Permanent" />
</rule>
Мой файл wp-config.php содержит следующее, чтобы устранить любые проблемы с кешированием браузера, и я отключил wp-super -кэш:
define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');
Проблема связана с перезаписью HTTPS вашего URL.
Измените правило перезаписи URL на указанное ниже и разверните его на «глобальном уровне» в IIS, чтобы правило сохранялось в applicationhost.config. Если у вас несколько сайтов, вам нужно создать правило для каждого и добавить другое условие для каждого сайта.
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{SERVER_PORT}" pattern="^80$" />
</conditions>
<action type="Redirect" url="https://mysite.tld/{R:1}" redirectType="Permanent" />
</rule>
Я знаю логически,это не имеет никакого смысла, у меня была такая же проблема. Путем проб и ошибок мне удалось решить эту проблему. Я чувствую ваше разочарование, другие также уже сообщали об этой проблеме раньше, но никаких решений не было предоставлено, как вы знаете, иначе вы бы не задавали этот вопрос :)
Если это правильный ответ, отметьте его как таковой.
Мы только что выполнили это упражнение и обнаружили, что проблема заключалась в установке флажка для Требовать безопасный (HTTPS) вход (у вас должен быть включен SSL в IIS)
в IIS сервер. Снятие флажка решило проблему.
Мы используем балансировщик нагрузки для перенаправления на HTTPS, поэтому он не нужен на сервере. "Слишком много перенаправлений" произошло из-за повторных попыток между балансировщиком нагрузки и сервером, так что да,это была проблема перенаправления, но она не связана ни с какими скриптами на сервере.
Спасибо, что указали мне правильное направление!