web-dev-qa-db-ja.com

310「リダイレクトが多すぎます」エラーが数時間ごとに発生し、数分以内に解決します

最近のいくつかの変更(以下を参照)に続いて、URL https://mysite.tld は3〜6時間ごとに正常に機能し、httpstatus.ioは11のリダイレクトの報告を開始します(ただし、これらのリダイレクトの詳細は示していません) 、「URLが正しく機能していません」などと表示されます)。常に11です。

1〜5分以内に自動的に解決し、0リダイレクトが再度報告されます。または、関連するアプリプールをリサイクルするか、web.configファイルを何らかの方法で編集すると、問題はすぐに解決されます。

誰かがこれまたはそれのようなものを見たことがありますか?さらにデバッグするにはどうすればよいですか?

バックグラウンド

この問題は、Let's Encryptから証明書をインストールし、サイトを非セキュアwwwからセキュア非wwwに一意のIPで移動した後に始まりました。また、FTPサーバーに2番目の証明書を追加しました。

動作中の応答ヘッダーは次のとおりです。

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
user20856

問題はURLHTTPSリライトにあります。

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
Henry

この演習を行ったところ、問題はIISサーバーのRequire Secure (HTTPS) sign in (You must have enabled SSL on IIS)のチェックボックスであることがわかりました。チェックを外すと問題が解決しました。

ロードバランサーを使用してHTTPSにリダイレクトしているため、サーバーでは必要ありません。 「リダイレクトが多すぎる」のは、ロードバランサーとサーバー間の再試行が原因でした。そのため、はい、リダイレクトの問題でしたが、サーバー上のスクリプトとは関係ありませんでした。

私を正しい方向に向けてくれてありがとう!

0
Jim