310“重定向次数过多”错误每隔几小时出现一次,几分钟内即可自行解决

310“重定向次数过多”错误每隔几小时出现一次,几分钟内即可自行解决

经过最近的一些更改(见下文),URLhttps://mysite.tld运行正常,直到每隔 3-6 小时,httpstatus.io 开始报告 11 次重定向(但它不会详细说明这些重定向,只是说“URL 运行不正常”或类似内容)。它始终是 11。

它会在 1-5 分钟内自行解决,再次报告 0 次重定向,或者如果我回收相关的应用程序池,或者以任何方式编辑 web.config 文件,它会立即解决问题。

有人见过这种情况吗?我该如何进一步调试?

背景

在安装 Let's Encrypt 的证书并将网站从非安全 www 移至唯一 IP 上的安全非 www 后,问题就开始了。我还向 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', '');

答案1

问题出在你的 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>

我知道从逻辑上讲,这没有任何意义,我遇到了同样的问题。经过多次尝试,我终于用这种方法解决了问题。我理解你的沮丧,其他人也曾报告过这个问题,但如你所知,他们没有提供解决方案,否则你就不会提出这个问题了 :)

如果这个答案是正确的,请标记。

答案2

我们刚刚完成了这个练习,发现问题出Require Secure (HTTPS) sign in (You must have enabled SSL on IIS)在 IIS 服务器上的复选框上。取消选中即可解决问题。

我们正在使用负载平衡器重定向到 HTTPS,因此服务器上不需要它。“重定向次数过多”是由于负载平衡器和服务器之间的重试造成的,所以,是的,这是一个重定向问题,但与服务器上的任何脚本无关。

感谢您为我指明正确的方向!

相关内容