Назад | Перейти на главную страницу

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-cache:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

Проблема заключается в перезаписи вашего URL HTTPS.

Измените правило перезаписи 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>

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

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

Мы просто выполнили это упражнение и обнаружили, что проблема заключалась в флажке для Require Secure (HTTPS) sign in (You must have enabled SSL on IIS) на сервере IIS. Снятие флажка решило проблему.

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

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