エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


このウェブページにはリダイレクト ループが含まれていますの対策12事例+2事例追加

      2017/03/07

リダイレクトループ、自動転送設定がループへの原因と対応方法12選+α

 
リダイレクトループ、自動転送設定がループするというエラーは、比較的よく発生しています。
リダイレクトが多すぎます、というエラーも同種の意味です。
原因は様々ですので、一つの解決策を提示するだけでは解決しない場合も存在します。
 
そのため、この記事では、そもそもの原因を説明しつつ、事例を挙げて対応方法について解説していきます。
 
ちなみに、エラーメッセージの表現の仕方は下記の通り、各ブラウザによって違うのですが、ここでは「リダイレクトループ」と表現します。
 
 

このウェブページにはリダイレクト ループが含まれています

 
Google chromeではこんなメッセージが表示されます。
 
20140326_wp_01
 
このウェブページにはリダイレクト ループが含まれています
 
http://*******/error.php のウェブページは リダイレクトの回数が多すぎます。このサイトの Cookie を削除するか、サードパーティの Cookie を許可すると問題が解決することがあります。 引き続き問題が解決しない場合は、ご使用のコンピュータではなく、サーバー側の設定上の問題である 可能性があります。
この問題の詳細については、こちらをご覧ください。
エラー コード: ERR_TOO_MANY_REDIRECTS
 
「こちら」のリンク先は https://support.google.com/chrome/answer/95647?rd=1 になります。
 
 

ページの自動転送設定が正しくありません

 
FireFoxではこんなメッセージが表示されます。
 
20140326_wp_02
 
ページの自動転送設定が正しくありません
 
このアドレスへのリクエストに対するサーバの自動転送設定がループしています。
Cookie を無効化したり拒否していることにより、この問題が発生している可能性もあります。
 
 

このページは表示できません

 
Internet Explorerではこんなメッセージが表示されます。
 
20140326_wp_03
 
このページは表示できません
 
・Web アドレス http://localhost:8080 が正しいか確かめてください。
・検索エンジンでそのページを探してください。
・数分待ってから、ページを最新の情報に更新してください。
 
 


 

リダイレクトループの原因

 

リダイレクトループのエラーの意味と原因

 
リダイレクトループの意味は、何度も同じページを呼び出そうとしてループしていますよ、ということです。
 
例えば、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」というファイルを作成し、適当なフォルダにアップし、アクセスをしてみてください。
———————————-

———————————-
 
そうするとここで説明しているエラーが表示されます。
 
これは、「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つが重なったときです。

  1. WordPressでサブドメインを設定したサイト
  2. カテゴリ・フォルダ単位で Basic認証を設定する場合

 
1の WordPressをサブドメインで運用する場合は少なくないと思いますが、2のカテゴリ単位で Basic認証を設定する、と言う場合はあまりないでしょう。
 
そもそもカテゴリ単位で Basic認証は設定できない、と思っている方が多いでしょうから。
 
と言うわけで、WordPressでカテゴリ単位での Basic認証の設定方法、および、サブドメインでそれを実施する場合にリダイレクトループが発生する場合の対処方法については、下記に記事を書いていますので参考にしてみてください。
 WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. ryo より:

    こんにちは、無限ループ?にはまって困っています。
    wordpressでブログを作った時に、リンクを繋げるために二つのサイトのURLをはりあいましたが、なにも変わりませんでした。そのため、片方のサイトのURLを治したあとにみると、ログイン画面にURLを貼ってもログインできなくなりました。どうしたらいいのでしょうか?

  2. エス技研 より:

    ryoさん、コメントありがとうございます。
    ご連絡いただいた内容では十分な状況の理解が出来ませんので、その対処方法についても検討することが難しい状況です。
    もし問題がなければ、より具体的な状況の説明は可能でしょうか?
    例えば、「ログインできなくなりました」と言う状況も多様なログインできない状態があると思います。

  3. カズ より:

    こんにちは、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
      データベース上に登録情報が残っていれば、再度プラグインを登録したときに同じことが発生するかもしれませんが...

  4. とおりすがり より:

    ループは
    loopです

    • エス技研 より:

      とおりすがりさん、コメントありがとうございます。
      いやー、お恥ずかしい間違いをしてしまいました。修正させていただきました!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

ECCUBEの商品一覧ページのSEO対策!rel=”next” rel=”prev”を設定

Googleは関連あるページはその旨明示するよう求めています。ECCUBEの商品一覧ページでその求めに応じるための「rel=”next”」「rel=”prev”」について解説します。

数値文字参照コード変換ツール(HTML特殊文字コード変換ツール)

テキストを数値文字参照コード(特殊文字コード)に変換するツール。テキストを数値文字参照コードに簡単変換。数値文字参照、文字実体参照、特殊文字などの違いも解説。

GMOペイメントゲートウェイのjava.io.IOExceptionのエラー

ECCUBEの決済でGMOペイメントゲートウェイのモジュールを使ってテスト決済を行った場合の不具合、java.io.IOExceptionと言うエラーの原因と対策方法の解説です。

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。

SEO対策用タイトル、ディスクリプションの文字数カウントツール

SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。

ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入

標準出力をバッファリングし変数に代入することができるob_start()関数の解説。include()の処理をバッファリングすることで自由な場所に処理を記述することが可能。

AdminerはphpMyAdmin代替のデータベース管理ツール

AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。

ECCUBEでテンプレートファイルのファイルサイズは10MB以下のものを使用してくださいのエラーが出た場合

テンプレートをアップロードする際にファイルサイズが大きすぎてエラーが表示される際の対処方法解説。パラメータ設定で設定する制限について解説を行っています。

PHP画面が真っ白 header(“Location: $url”);

PHPの開発で header(“Location: $url”);を使うと画面が真っ白になる不具合が出る場合もあります。

Smartyの Syntax Errorの原因はスペースかも

Smartyのなかなか原因がつかめない Syntax Errorの原因はスペースかもしれません。