Google Search Consoleを利用していると、「『インデックス カバレッジ』の問題が新たに検出されました」というメールが届くことがあります。

インデックス カバレッジにも種類があるのですが、今回は「リダイレクトエラー」について、その原因と改善方法について解説していきます。

インデックスカバレッジについては別記事にて解説していますので、そちらも参考にしてみてください。

リダイレクトエラーの原因

リダイレクトエラーとは、リダイレクト処理でエラーが発生している場合に表示されます。リダイレクトとは、指定のWebサイトに来訪したユーザーを自動的に指定した別ページに転送する処理のことを指します。
ドメインのよくある事例としては、ドメインのSSL化(httpからhttpsへの移行)の時やページのURLが変更された時などに使われます。

リダイレクトエラー

URLが変更されたページでも、リダイレクトを設定することで、検索エンジンのクローラーが変更を検知し、ページをクロールすることができるようになります。
ページのURLが変わっても、リダイレクトの処理をクローラーに説明することができれば、SEOに影響を与える被リンクの効果が継続して引き継がれ、ドメインパワーに対する影響を最小限にできます。

しかし、このリダイレクトが正しく設定されていないと、転送先のURLをクローラーが認識することができなくなり、SEO効果は引き継がれずWebサイトへの流入数に悪影響を与えます。
リダイレクトエラーが発生している場合は、リダイレクトが意図した通りになっているかを確認するようにしましょう。

ちなみにSearch Consoleヘルプではリダイレクトエラーについて

リダイレクト エラー: Google で、リダイレクト チェーンが長すぎる、リダイレクト ループが発生している、リダイレクト URL が最終的に URL の最大長を超えた、リダイレクト チェーンの URL が無効である、のいずれかのタイプのリダイレクト エラーが発生しました。Lighthouse などのウェブ デバッグツールを使用して、リダイレクトに関する詳細情報を入手してください。

と説明されています。
どれも「リダイレクトが複数回行われていることが好ましくない」ということですね。

リダイレクトエラーの改善方法

訪問者側の場合は「cookie」に関する解決法もありますが、今回はサイトの運営者側としての対応策を紹介していきます。

対象のURLがどのような状況なのか確認する

エラーとして扱われているページがどのような状態なのかをまずは知るところから始めましょう。
先ほどもお話をしましたが、このエラーが出ているということはリダイレクトが多すぎる(ループしてしまっている)状況がほとんどです。
chromeの拡張機能などでも確認をすることができますが、今回は、URLを入力するだけでリダイレクトの状態を教えてくれるページがあるのでこちらをご紹介しておきます。

リダイレクトチェックツール
リダイレクトチェック

ループの原因となっているリダイレクトの特定ができたら、そのリダイレクトを設定しているファイル(.htaccessやCMSプラグインなど)を修正・無効化等を行います。
ですが、.htaccessなどサイトにとって非常に重要なファイルなので自信がない方は慎重に記述の変更を行ってください。

WordPress環境でのリダイレクトループの原因別対応

WordPressでリダイレクトループが起こる原因は様々ですが、大きく分けて、パーマリンクの設定ミス、テーマの関数のリダイレクト設定のミス、何らかのプラグインのリダイレクトの設定ミス、httpsの設定ミス等が考えられます。

URLやパーマリンクの設定不全が原因の場合

サイトのURLの変更や、ディレクトリ変えによってリダイレクトループが発生した場合は、サイトURLの設定やパーマリンクの設定が正しく記載されていない可能性があります。そもそも、管理画面にもログインできなくなっている場合は、wp-config.phpに下記のようにまず記載してみます。

wp-config.phpに追加するコード
define('WP_HOME','https://WordPressのサイトトップページURL');
define('WP_SITEURL','https://WordPressのインストールディレクトリURL');Code language: JavaScript (javascript)

次に、https://WordPressのインストールディレクトリ/wp-admin/ にアクセスし、ログイン後に管理画面の「設定」→「一般」から

WordPress アドレス (URL)  → https://WordPressのサイトトップページURL
サイトアドレス (URL) → https://WordPressのインストールディレクトリURL

を正しく記載して更新しましょう。

パーマリンクを再設定

次に管理画面の「設定」→「パーマリンクの設定」に行き、そのままページ下の「変更の更新」ボタンを押します。
その際、.htaccessが書き込みできなかった旨のエラーが表示されたら、FTPソフト等でパーミッションを修正するか、直接.htaccessファイルにエラー画面に表示されている内容を書き込みましょう

この事によりパーマリンク設定が自動的に正しい値で書き出される為、設定不全が解消される事があります。

プラグインが原因の場合

プラグインがリダイレクトループを引き起こしている場合もあります。この場合、該当のプラグインを発見しプラグインの停止を行い、その結果サイトのリダイレクトループが解消されたら、今一度そのプラグインの設定を見直す必要がありますね。

W3 Total Cache

このプラグインでよくあるリダイレクトループの現象は、サイトの上記URL設定にwww.を加えると直る事があります。

WPtouch

WPtouchはユーザーがモバイルでサイトにアクセスしたときに、URLをモバイルサイトにリダイレクトします。
この機能が他のプラグインと相性が悪い場合にリダイレクトループを引き起こすことがあります。

対処方法は、他のプラグインで、モバイルアクセス時にリダイレクト機能を仕様しない設定を書き加えたりする事となります。

Redirection

Redirectionプラグインは、その名の通りワードプレスに様々なリダイレクト設定を追加できるプラグインです。
ここで誤った設定をしてしまうとリダイレクトループが発生する事があります。

該当URLの設定を検証して、おかしな状態になっていないか確認しましょう。

WordPress本体やテーマの関数が原因の場合

WordPressの本体には、様々なURLを自由にリダイレクトする機能が含まれています。この機能をテーマが使用していてリダイレクトループが発生している事があります。
強制的にワードプレスのリダイレクト関数の一部を停止すると、リダイレクトループが解消される事があります。

しかし、かなり強引な方法になりますのであまりお勧めはしませんが、どうしてもほかの手段で解決できそうにない場合は、検討してみてください。

テーマのfunctions.phpにのこの記載を一番上に追加してみてください。

functions.phpに追加するコード
remove_action('template_redirect', 'redirect_canonical');Code language: JavaScript (javascript)

https化によるリダイレクトループが原因の場合

WordPressをhttps化してhttpのURLからhttpsへのリダイレクトの設定を行った後に、リダイレクトループが発生する事があります。

この場合の代表的な対処方法をいくつか記載します。

サイトのURLが正しく設定されているか確認する

管理画面の「設定」→「一般」より、サイトのURL設定にhttpsが含まれているか確認してみてください。
また、www.をドメイン名の前に加えてリダイレクトループが解消するかどうかも確認してみましょう。

wp-config.phpを修正する

テーマのカスタマイズ画面から、wp-config.phpの末尾に下記の記載を追加します

wp-config.phpの末尾に追加するコード
$_SERVER['HTTPS'] = 'on';Code language: PHP (php)

管理画面へのログイン時に「このページにアクセスするための十分なアクセス権がありません。」と表示される場合

wp-config.phpへの対応をした場合に、こうなってしまうことがあります。
その場合は、「$_SERVER[‘HTTPS’] = ‘on’;」の記述を削除して、wp-config.php内の

「define(‘ABSPATH’, dirname(__FILE__) . ‘/’);」

という部分の下に

wp-config.phpの末尾に追加するコード
$_SERVER['HTTPS'] = 'on';
$web_site     = 'sample.jp';
$web_site_url = 'https://' . $web_site;
 
define('WP_HOME',    $web_site_url);
define('WP_SITEURL', $web_site_url);
 
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);Code language: PHP (php)

sample.jpの部分には、WordPressのドメインURLを記載されてください。

まとめ

リダイレクト問題は「どこが原因なのか」を探すのが一番大変な部分になりますが、1つ1つ今回紹介した方法を試して、根気強く原因究明に取り組んでみてください。

放っておくとせっかく訪問してくれたユーザーがサイトにアクセス出来ず、不快な思いのまま離脱という最悪なケースが待っています。

わからない点はお気軽にご相談ください

急に警告メールが届いて不安に思った方もいらっしゃると思いますが、この記事が多少なりとも、お役に立てば幸いです。

今回はテクニカルな内容も多かったので、ある程度ウェブに関する知識がないと難しい部分もあると思います。

記事を読んで不明な点等がありましたらお気軽にTwitter(@kaznak_com)などでご質問ください。

ではまた。