310 Ошибка «Слишком много перенаправлений», которая возникает каждые несколько часов и устраняется сама собой в течение нескольких минут

После некоторых недавних изменений (см. ниже) 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', '');
1
задан 30 September 2016 в 14:42
2 ответа

Проблема связана с перезаписью 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>

Я знаю логически,это не имеет никакого смысла, у меня была такая же проблема. Путем проб и ошибок мне удалось решить эту проблему. Я чувствую ваше разочарование, другие также уже сообщали об этой проблеме раньше, но никаких решений не было предоставлено, как вы знаете, иначе вы бы не задавали этот вопрос :)

Если это правильный ответ, отметьте его как таковой.

1
ответ дан 3 December 2019 в 23:40

Мы только что выполнили это упражнение и обнаружили, что проблема заключалась в установке флажка для Требовать безопасный (HTTPS) вход (у вас должен быть включен SSL в IIS) в IIS сервер. Снятие флажка решило проблему.

Мы используем балансировщик нагрузки для перенаправления на HTTPS, поэтому он не нужен на сервере. "Слишком много перенаправлений" произошло из-за повторных попыток между балансировщиком нагрузки и сервером, так что да,это была проблема перенаправления, но она не связана ни с какими скриптами на сервере.

Спасибо, что указали мне правильное направление!

0
ответ дан 3 December 2019 в 23:40

Теги

Похожие вопросы