リダイレクトループが原因で「ERR_TOO_MANY_REDIRECTS」「このページを表示できません」が出たときの対策12事例+α
2019/02/24
自動転送設定などが原因でリダイレクトループし「ERR_TOO_MANY_REDIRECTS」などのエラーが出ることの原因と対応方法12選+α
リダイレクト設定、自動転送設定がループしてしまう、というエラーは比較的よく発生しています。
そして、それが原因で「リダイレクトが繰り返し行われました。」「ERR_TOO_MANY_REDIRECTS」「ページの自動転送設定が正しくありません」というエラーメッセージが表示されることがあります。
かつて、Google Chromeでは「このウェブページにはリダイレクト ループが含まれています」というメッセージが表示されていましたが、これも同じ不具合に対するエラーメッセージです。
これらは、「リダイレクトが多すぎます」というエラーで同種の内容です。
リダイレクトループの原因は様々ですので、一つの解決策を提示するだけでは解決しない場合も存在します。
そのため、この記事では、そもそもの原因を説明しつつ、事例を 12+αを挙げて対応方法について解説していきます。
ちなみに、エラーメッセージの表現の仕方は下記の通り、各ブラウザによって違うのですが、ここでは「リダイレクトループ」と表現します。
このページは動作していません・ERR_TOO_MANY_REDIRECTS
現在(2018年03月24日時点)のGoogle chromeではこんなメッセージが表示されます。
このページは動作していません
localhost でリダイレクトが繰り返し行われました。
Cookie を消去してみてください.
エラー コード: ERR_TOO_MANY_REDIRECTS
エラーメッセージの「ERR_TOO_MANY_REDIRECTS」がポイントになります。
このウェブページにはリダイレクト ループが含まれています
以前の Google chromeではこんなメッセージが表示されていました。
このウェブページにはリダイレクト ループが含まれています
http://*******/error.php のウェブページは リダイレクトの回数が多すぎます。このサイトの Cookie を削除するか、サードパーティの Cookie を許可すると問題が解決することがあります。 引き続き問題が解決しない場合は、ご使用のコンピュータではなく、サーバー側の設定上の問題である 可能性があります。
この問題の詳細については、こちらをご覧ください。
エラー コード: ERR_TOO_MANY_REDIRECTS
「こちら」のリンク先は https://support.google.com/chrome/answer/95647?rd=1 になります。
ページの自動転送設定が正しくありません
FireFoxではこんなメッセージが表示されます。
ページの自動転送設定が正しくありません
このアドレスへのリクエストに対するサーバの自動転送設定がループしています。
Cookie を無効化したり拒否していることにより、この問題が発生している可能性もあります。
このページは表示できません・INET_E_REDIRECT_FAILED
Internet Explorerではこんなメッセージが表示されます。
このページは表示できません
・Web アドレス http://localhost:8080 が正しいか確かめてください。
・Bing でこのサイトを検索
・ページを更新
リダイレクトが多すぎました。
エラー コード: INET_E_REDIRECT_FAILED
このページは表示できません・INET_E_REDIRECT_FAILED
Microsoft Edgeではこんなメッセージが表示されます。
このページは表示できません
・Web アドレスが正しいことを確認してください: http://localhost:8080
・Bing で “http://localhost:8080” を検索してください
・ページを最新の情報に更新
リダイレクトが多すぎました。
エラー コード: INET_E_REDIRECT_FAILED
リダイレクトループの原因
リダイレクトループのエラーの意味と原因
リダイレクトループの意味は、何度も同じページを呼び出そうとしてループしていますよ、ということです。
例えば、http://blog.s-giken.net/***.html という URLにアクセスしたとします。
ですが、このページはこのページ自身の http://blog.s-giken.net/***.html というページにリダイレクト設定(自動転送設定)されていて、呼び出そうとしても結局は自身のページにリダイレクトしてしまうため、それを何度も繰り返してしまう状況になってしまいます。
そうなると、そのまま続けるとサーバに負荷がかかるため、それ以上負荷をかけないためにブラウザ側でそれをエラーとして表示させないようにしてしまいましたよ、といった内容のエラーです。
リダイレクトループの原因は、上記でも書きましたが、表示しようとしているページにリダイレクトする設定になってしまっているため、エラーになってしまっています。
リダイレクトループの原因の切り分けと対応方法
リダイレクトループの原因は、大きく分けて 3つに分類することができます。
・ブラウザ側の原因
・セキュリティソフトなどを含めた複合的な要因
・サーバ側の原因
ブラウザ側の原因
ブラウザ側の原因としては、主にブラウザに保存される Cookieが悪い影響を与えていることで、処理がループしてしまうことにあります。
・昨日まで見れていたサイトが今日は見られなくなった
・さっきまで見られていたサイトがブラウザにアドオンを入れたら見られなくなった
・ブラウザを変えたら見られなくなった(他のブラウザでは見られる)
・パソコンを変えたら見られなくなった(他のパソコンでは見られる)
といった場合は、この Cookieを主因としたブラウザ側の原因に起因している場合が多いでしょう。
この場合は、ブラウザの Cookieの削除、ページの履歴の削除を行うことでほとんどの場合は問題が解消します。
Cookieの削除う方法については、「Cookieの削除方法」で検索をすることで多くの削除方法が見つかりますので、ここでの説明方法は省略します。
ただ、本来はスマホ専用のゲームを、ブラウザのユーザーエージェント(User-Agent)を偽装することで PCから利用できるようする、という方法がありますが、これを利用していて、ある日突然利用できなくなった、という場合は回復しない場合も多々あります。
理由は、そもそも PCで利用することは規約外であるため、ゲームの提供・運営側がスマホを偽装した PCのブラウザからのアクセスを拒否するような何かしらの対処を行った場合もあるからです。
この場合は、おとなしくあきらめるか、違う方法を求めて技術、知識を勉強するか、のどちらかになるでしょう。
セキュリティソフトなどを含めた複合的な要因
基本的には、ブラウザ側の問題として Cookieに起因する問題に原因がある場合が多いのですが、それに加えてセキュリティソフトの設定などの影響によって起こる場合もあるようです。
状況の確認としては、ブラウザが原因の時と同じく、ブラウザを変えると見られるとか、Cookieを消すと見られるようになる、といったことで確認できます。
しかし、5分、10分とブラウザを使っているとまた見られなくなるといった現象が起こるなど、実用に耐えられない状況が起こったりするようです。
私の場合は、一般的なセキュリティソフトではなく、とあるオンラインゲームでサーバに接続するために常駐するセキュリティソフトが原因で Google Chromeだけ接続できなくなるといった現象もありましたので、本当に原因は様々です。
(セキュリティソフトのバージョンが更新されたことで接続できなくなり、再びバージョンが更新されたことで接続できるようになりましたので、何に起因したものかははっきりしましたが、原因はよく分からない事案でした。)
これに原因がある場合は、対応方法があるのかどうかわかりません。
そのソフトの使用を止めるしかないのかもしれません。
場合によっては、セキュリティソフトではなく、ウィルス、マルウェアなどの不正アプリケーションなどが原因のこともあります。
その場合は、ウィルス、マルウェア等を削除するしかありませんが、申し訳ありませんが、ここではそんな事象がある、といった話までで対応方法などは説明できません。
サーバ側の原因
サーバ側の設定による原因も一つの大きな要因として存在しています。
このブログは、技術系のブログですので、ここを見に来ていただいている方々の多くは、プログラムを作成したり、 Webサイトを構築したりしている方々だと思っていますが、そのような方々が何かを構築している最中にブラウザで動作確認しようとしたら、リダイレクトループのエラーに遭遇してしまった、という場合はこのサーバ側の原因である場合がほとんどでしょう。
原因としても、最初に説明したように Locationでリダイレクトの処理を記述したけども、自身のページにリダイレクトする処理を記述してしまったためにエラーになってしまった、というような場合がこれに該当します。
具体的な実験をしてみましょう。
下記のコードを記述した「error.php」というファイルを作成し、適当なフォルダにアップし、アクセスをしてみてください。
———————————-
1 2 3 |
<?php header("Location: ./error.php"); ?> |
———————————-
そうするとここで説明しているエラーが表示されます。
これは、「header(“Location: ./error.php”);」でリダイレクト処理をしていますが、このページ自身にリダイレクトしていますので、そのまま処理の実行を続けると延々とこのページをリダイレクトし続け、サーバに負荷がかかるため、ブラウザがエラーとして処理を止めています、というエラーの内容になっています。
そのため、このエラーが起こった場合の対応方法は、リダイレクトしてループしてしまっている処理を探してそれを取り除く、ということになります。
以下は、そのリダイレクトループをしそうな内容を列挙しつつ、その対応方法を説明していきますので、思い当たるものがあればその対応をしてみてください。
ただ、実際の原因はものすごく多様なものになりますので、ここですべてを上げることはできません。
そのため、ここに列挙されていない原因の場合も多々ありますので、ループしそうな箇所を丹念に探して対応していくということになるでしょう。
事例1.エラーページでリダイレクト処理をする部分で発生
上の方に、リダイレクトループを発生させるサンプルプログラムを記述しましたが、あのサンプルプログラムも実際に発生したリダイレクトループをもとに作成しています。
とあるサイトのサーバ移転をする依頼がありました。
そのサイトに触るのは初めてで、ファイルの構成、プログラムの構成なども全く分からない状況での対応でした。
そんな状況でしたので、もちろんサーバを移転すればエラーが発生します。ですが、エラーが正しく表示されません。そしていろいろ調べている中に、エラー処理をしている関数を見つけました。
そこには、似たようなドメインでありながら本番環境とはちょっとがう感じの URLが書いてあったのですが、何かの間違いだと思い、エラーの場合はトップページにリダイレクト処理を記述してしまいました。
結果、トップページにアクセスするとエラーが発生し、トップページにリダイレクトするため、リダイレクトループが発生する....という不具合が発生してしまいました。
この時は、そもそものサイトの構成が分からなかったため、URLが書いてあるところをよく読みもせずに機械的に変更していたこともあり、原因を発見するまでにかなりの時間を要してしまいましたが、原因は、エラーが発生した時に呼ばれるエラーページ表示関数で発生するリダイレクトによって起こっていました。
エラーが発生することによってリダイレクトループが発生するという二重のトラップにかかってしまい、原因が見えにくくなっていた事例です。
この事例のエラーページにかかわらず、リダイレクト処理がある場合は、まずそこを最初に確認する方がいいでしょう。
事例2..htaccessで設定する mod_rewriteによる不具合
事例 1のように、phpなどのプログラムに記述されたリダイレクトによってループが発生する場合もありますが、wwwあり・なしの設定や、URLが変更になった場合などに .htaccessによるリダイレクト設定を行いますが、それが原因でリダイレクトループが発生することもあります。
301転送などの様に他のサーバに転送する場合はほとんど問題ありませんが、ページ構成を変更した場合や、レンタルサーバなどで共有ドメインから独自ドメインにリダイレクトする場合など同じサーバ内でリダイレクトする場合には設定ミスによってリダイレクトループしやすくなりますので注意が必要です。
リダイレクト先の URLに転送元のディレクトリ名が含まれている場合は、リダイレクトループになりますのでよく確認しましょう。
また、この場合、Google Analyticsには下記の様に大量のループしたページがリストアップされる場合もあります。
http://*****/loop/index.html
http://*****/loop/loop/index.html
http://*****/loop/loop/loop/index.html
http://*****/loop/loop/loop/loop/index.html
http://*****/loop/loop/loop/loop/loop/index.html
対処方法は、リダイレクトの処理を再確認することで行います。
また、引越しの際のリダイレクト設定については「サイト更新、引越時に.htaccessでリダイレクトする方法解説」に記事を書いていますので、参考にしてみて下さい。
事例3.WordPressのプラグイン「WPtouch Mobile Plugin」で発生
WordPressの設定などでもリダイレクトループが発生します。
モバイルサイトを構築するためのプラグイン「WPtouch Mobile Plugin」で発生したリダイレクトループに関しての詳細と対応方法を下記に書いていますのでご参照ください。
『WordPressで WPtouchを入れたら「このウェブページにはリダイレクト ループが含まれています」と表示されてページが表示されなくなった』
不具合の原因は、トップページからリダイレクトする設定を行う項目があるのですが、そこにトップページにリダイレクトする設定をしてしまうことにより、リダイレクトループが発生する、という内容です。
直近でどのような設定を変更したか、それを改めてチェックしながら解消をする必要があるでしょう。
また、同じくモバイルサイト構築用のプラグイン「WPtouch」でも「Home Page Re-Direction」の項目の設定の仕方によってはリダイレクトループが発生するようですので、こちらも注意が必要です。
事例4.WordPressのプラグイン「Redirection」で発生
事例 3と同じく WordPressのプラグインが原因で発生するリダイレクトループです。
リンク切れが発生した場合、自動的にリンク切れを指定されたページに転送するというプラグイン「Redirection」によって発生する問題です。
パーマリンクが変更されたら自動的に転送する処理もあり、その処理のためにパーマリンクを変更するとトラブルに遭遇しやすくなるようです。
詳しくは、下記を参照ください。
http://narts.blog32.fc2.com/blog-entry-1407.html
事例5.concrete5という CMSで発生するリダイレクトループ
私は、concrete5を使っていませんので詳細は分かりかねますが、サーバを引越しをする際にリダイレクトループが発生することもあるようです。
詳しくは、下記を参照ください。
http://concrete5-japan.org/community/forums/install/post-1104/
事例6.WordPressの統合パッケージプラグイン「wp-sitemanager」で発生
事例 3などと同じく、WordPressのプラグインが原因で発生するリダイレクトループです。
wp-sitemanagerというプラグインは、サイトマップ表示、パンくずナビ表示、ページネーション表示、ページキャッシュ機能などがある WordPressを CMSとして利用する際便利な統合パッケージプラグインなのですが、これで利用されているページキャッシュ機能が原因でリダイレクトが発生するようです。
詳しくは、下記を参照ください。
http://www.wp-sitemanager.com/
事例7.WordPressのバックアッププラグイン「BackWPup」で発生
事例 3などと同じく、WordPressのプラグインが原因で発生するリダイレクトループです。
BackWPupは、自動バックアップを行うプラグインですが、バージョンアップによってリダイレクトループが発生し、ログインすらできなくなるようです。
ログインできないというのは非常に危険ですね。
プラグインのバージョンアップであっても事前にバックアップを取ってから行いたいものですね。
詳しくは、下記を参照ください。
http://love-guava.com/wordpress-does-upgrade-of-backwpup-plug-in-produce-fault-take-care/
事例8.WordPressの管理画面の SSL化で発生
こちらも WordPressの話題ですが、プラグインではなく、管理画面を SSLに設定する際に発生した不具合です。
こちらは、不具合の報告ではありますが、WordPressの管理画面を始め、投稿などのページなどを SSL環境で運用したい場合の設定の参考にもなりますので、SSL化を検討している方もいかがでしょうか。
詳しくは、下記を参照ください。
http://sabaoh.sakura.ne.jp/wordpress/?p=136
事例9.ロードバランサーを使っているサーバでの SSL化で発生
事例 8に続いて、SSL化の際の事例です。
こちらは、.htaccessを使ってリダイレクトの処理を作成していますが、単純に SSL化する際に発生したものではなく、ロードバランサーも絡んでいたために不具合が発生したようですが、あまり事例がないようですので、ロードバランサーがらみで不具合がある場合には参考になるかと思います。
詳しくは、下記を参照ください。
http://qa.atmarkit.co.jp/q/3221
事例10.Apacheの VirtualHostの設定で発生
Apacheの VirtualHostの設定を行う際にも発生するようです。
この設定はやや特殊ではありますが、.htaccessではなく、httpd.confの VirtualHostの設定でリダイレクトの処理を記述しようという場合には、.htaccessで発生する不具合と同じように不具合が発生するということですね。
詳しくは、下記を参照ください。
http://www.kurobuti.com/blog/?p=2912
事例11.ECCUBEのログインで発生
ECCUBEでは、管理画面の SSLに関する設定によってはリダイレクトループが発生するようです。
詳しくは、下記を参照ください。
http://blog.bgbgbg.net/archives/609
事例12.MediaWikiで発生
MediaWikiというオープンソースのフリーウェアのウィキパッケージでも発生するようです。
詳しくは、下記を参照ください。
http://fp-the-ambiguous.blogspot.jp/2010/02/mediawikiver-1612localsettingsphpphp5.html
リダイレクトループのまとめ
様々な場面で、様々な要因でこのリダイレクトループは発生します。
原因もさまざまですが、何らかの原因によって表示されているページが自身のページにリダイレクトされ、それによってリダイレクトのループが発生しているわけですので、そのリダイレクトの処理が書かれている場所の特定と、リダイレクトしてしまう原因を特定することで解決できます。
その原因を見つけるためにこの記事が少しでもお役にたてれば嬉しいですね。
そのほかこんなところに問題がある場合があるよとか、こんな記事がありましたとか、ありましたらコメントを残すなどしてご連絡いただけると助かります!
2014.07.03 追記
リダイレクトループの原因の一つとなる「header(“Location: $url”);」の使い方ですが、記述の仕方によっては画面が真っ白になるという不具合が発生する場合もあります。
そんな場合の対処方法は「header(“Location: $url”);」の関数を使ったら画面が真っ白になるという不具合に関しては、「PHP画面が真っ白 header(“Location: $url”);」に記事を書いていますので、そんな現象が起こった場合は参考にしてみてください。
さくらインターネットのSSLでリダイレクトループが発生 2015.06.12 追記
さくらインターネットのレンタルサーバに、専用 SSLを設定するときにリダイレクトループが発生するという現象が確認されました。
条件は
・さくらインターネットのレンタルサーバ
・専用 SSLを設定する
・URLを https://www. の用に「www.」がある
・WordPressを利用している
ということです。
4つも条件があればなかなかないような気もしますが、今後は専用 SSLを利用するユーザも増えてくることが考えられますので、だんだんとこのリダイレクトループにはまる人が増えてくるんじゃないかと思われます。
そして大きな問題になる可能性がある気がしますね。
対応方法が参考になります。
https://www.haluka.org/blog/2278/
WordPressでサブドメインを設定したサイトに、カテゴリ単位・フォルダ単位で Basic認証を設定するとリダイレクトループが発生 2016.07.02 追記
このリダイレクトループの発生は、なかなかお目にかからない状況だとは思いますが、必要となる場面においては致命的な問題となりますね。
発生条件は下記の 2つが重なったときです。
- WordPressでサブドメインを設定したサイト
- カテゴリ・フォルダ単位で Basic認証を設定する場合
1の WordPressをサブドメインで運用する場合は少なくないと思いますが、2のカテゴリ単位で Basic認証を設定する、と言う場合はあまりないでしょう。
そもそもカテゴリ単位で Basic認証は設定できない、と思っている方が多いでしょうから。
と言うわけで、WordPressでカテゴリ単位での Basic認証の設定方法、および、サブドメインでそれを実施する場合にリダイレクトループが発生する場合の対処方法については、下記に記事を書いていますので参考にしてみてください。
WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
路線・駅検索のために緯度経度からPHPで2点間の距離を計算する処理解説
路線・駅検索の仕組みの構築は大変。それを簡易に実装するために緯度経度を元に距離計算をする仕組みを考案。まずは2点間の距離を計算する仕組みを解説し、距離計算にまつわる関連技術も紹介。
-
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
路線・駅検索の仕組みの構築は大変。登録する側も最寄り駅が多い場合は大変。なので簡易に実装するため緯度経度に基づき直線距離を計算する処理を考案して実装して、その処理を解説。
-
QRコード(二次元バーコード)作成サービスを公開
QRコード(二次元バーコード)を生成するサービス。QRコードにする文字列を入力するだけで QRコードが簡単に作れる。オプションとして、画像サイズ、余白サイズ、エラー訂正レベルがある。
-
連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説
PHPの配列・連想配列のキーと値をまとめてhtmlspecialchars()関数でサニタイズ(無害化、無毒化)を行う関数を作成。連想配列のキーはarray_map()関数でのサニタイズは無理。
-
数値文字参照コード変換ツール(HTML特殊文字コード変換ツール)
テキストを数値文字参照コード(特殊文字コード)に変換するツール。テキストを数値文字参照コードに簡単変換。数値文字参照、文字実体参照、特殊文字などの違いも解説。
-
PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較
PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。
-
サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない
PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。
-
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い
文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。
-
パーミッション(属性)一括変更ツール・WordPress最適化済
WordPressのパーミッション(属性)を一括変更するツールを作成!ファイル、フォルダのパーミッションが一覧表示でき、ファイルを選んでパーミッションの変更が行えます。
-
ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集
ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。
Comment
こんにちは、無限ループ?にはまって困っています。
wordpressでブログを作った時に、リンクを繋げるために二つのサイトのURLをはりあいましたが、なにも変わりませんでした。そのため、片方のサイトのURLを治したあとにみると、ログイン画面にURLを貼ってもログインできなくなりました。どうしたらいいのでしょうか?
ryoさん、コメントありがとうございます。
ご連絡いただいた内容では十分な状況の理解が出来ませんので、その対処方法についても検討することが難しい状況です。
もし問題がなければ、より具体的な状況の説明は可能でしょうか?
例えば、「ログインできなくなりました」と言う状況も多様なログインできない状態があると思います。
こんにちは、HPのサイトマップが表示されなくて困っています。
WordPressのプラグイン「Google XML Sitemapsバージョン 3.4.1」→「Google XML Sitemapsバージョン 4.0.8」に更新して、旧バージョンに戻す処理を行いました。1回目は問題ありませんでしたが、再度同じ処理を繰り返した結果、HPのサイトマップを表示しようとしても表示されない。スマホで表示しようとしたら、「このページはサーバーのリダイレクトが多すぎます。」とエラー表示されます。
このHPのサイトマップアドレスをリダイレクト回数をチェックツールで調べたところリダイレクト回数が9回と表示され、以下のように繰り返し301リダイレクトが行われています。
①http://*******.com/saitemap.xml
②http://*******.com/saitemap.xml/
③http://*******.com/saitemap.xml
④http://*******.com/saitemap.xml/
⑤http://*******.com/saitemap.xml
⑥http://*******.com/saitemap.xml/
⑦http://*******.com/saitemap.xml
⑧http://*******.com/saitemap.xml/
このようになったサイトの対処方法はございますでしょうか?
宜しくお願い致します。
カズさん、コメントありがとうございます。
コメントいただいた内容だけではイマイチ状況をつかみきれていませんが、リダイレクトループを止めることを優先するのであれば、下記にも記事を書いていますが、不具合が起こった原因のプラグインをフォルダごと削除することで影響はなくなるんじゃないかと思います。
http://blog.s-giken.net/119.html
データベース上に登録情報が残っていれば、再度プラグインを登録したときに同じことが発生するかもしれませんが...
ループは
loopです
とおりすがりさん、コメントありがとうございます。
いやー、お恥ずかしい間違いをしてしまいました。修正させていただきました!