🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Search Consoleの「リダイレクト エラー」を、まず転送の道順から直す

「ページにリダイレクトがあります」は正常なこともあります。でも「リダイレクト エラー」は、Googlebotが転送先にたどり着けていないサインです。焦ってcanonicalやnoindexを触る前に、まずリダイレクトの通り道を1本に整えましょう。

結論:エラーのURLではなく、転送の途中を疑う

Search Consoleの「リダイレクト エラー」は、記事の本文やタイトルが悪いというより、URLの転送経路でGooglebotが止まっている状態です。代表例は、リダイレクトチェーンが長い、同じURL同士で回り続ける、転送先URLが空、httpとhttpsのルールがぶつかっている、といったケースです。

まずは次の順番で確認します。

  1. Search Consoleで対象URLと表示文言をメモする。
  2. ブラウザで開き、最終的に表示されるURLを見る。
  3. URL検査のライブテストでGooglebotが取得できるか確認する。
  4. HTTPステータスとLocationヘッダーを確認し、301/302がどこへ向いているか見る。
  5. .htaccess、PHPのheader関数、CMSの転送設定、meta refreshやJavaScript転送を分けて確認する。
  6. サイトマップと内部リンクを、リダイレクト前ではなく最終URLへそろえる。
  7. 修正後にURL検査から再クロールを依頼する。

「ページにリダイレクトがあります」との違い

名前が似ているので混ざりやすいですが、対応はかなり違います。

Search Consoleの表示 意味 最初にやること
ページにリダイレクトがあります 元URLが別URLへ転送されています。意図した統合やURL変更なら正常です。 転送先URLがインデックス対象になっているか確認します。
リダイレクト エラー Googlebotが転送先を正常にたどれていません。 チェーン、ループ、不正な転送先、http/httpsやwwwの競合を確認します。

つまり、リダイレクトがあること自体は問題ではありません。問題は、Googlebotが最終ページまできれいに到達できないことです。

よくある原因と直し方

原因 よくある状態 直し方
リダイレクトチェーンが長い 旧URLA、旧URLB、http、https、wwwなどを何段も経由している。 古いURLから最終URLへ直接301で向けます。途中URLをできるだけ減らします。
リダイレクトループ httpからhttpsへ転送したあと、別ルールでhttpsからhttpへ戻る。 http/https、www/non-www、末尾スラッシュの正解を1つに決め、逆向きルールを消します。
転送先URLが空または不正 PHPの変数が空でLocationが空になる。日本語やスペースを含むURLをそのまま返している。 Locationには絶対URLまたは正しい相対パスを返し、空のときはリダイレクトしない条件を入れます。
URLが長すぎる クエリ文字列を付け足し続け、転送のたびにURLが伸びる。 不要なパラメータを引き継がないようにし、正規URLへ直接転送します。
転送先が404または5xx リダイレクト先の記事を削除済み、またはPHPエラーで500になっている。 転送先を公開中の200ページに変えるか、削除方針を決めて404/410に整理します。
canonicalとリダイレクトの方針が違う AからBへ転送しているのに、BのcanonicalがAを指している。 リダイレクト先、canonical、サイトマップ、内部リンクを同じ最終URLにそろえます。

.htaccessで見る場所

ロリポップや一般的なPHPサイトでは、.htaccessのRewriteRuleが原因になることが多いです。特に次の組み合わせは、片方を直したつもりで反対側のルールが残りやすい部分です。

  • httpからhttpsへ統一するルールと、httpsからhttpへ戻す古いルールが同時にある。
  • wwwありへ統一するルールと、wwwなしへ統一するルールが同時にある。
  • 末尾スラッシュを付けるルールと、外すルールが同時にある。
  • 古い記事URLをすべてトップページへ飛ばしていて、途中で別の転送に巻き込まれている。
  • RewriteRuleの順番が悪く、個別記事の転送より先に全体転送が動いている。

ポイントは、「正規URLを1つ決める」ことです。たとえば https://example.com/page/ に統一するなら、http、wwwあり、末尾スラッシュなし、古いパスのどれから来ても、最終的にそのURLへ直接向かうようにします。

PHPのheader関数で見る場所

PHPで header('Location: ...') を使っている場合は、Locationの中身が毎回正しく作られているかを確認します。特に、記事slugやカテゴリslugを変数から作る処理は、空文字のまま転送してしまうことがあります。

// 悪い例:$slug が空でも転送してしまう
header('Location: /articles/' . $slug);
exit;

// 見直し例:空のときは転送せず、最終URLを明示する
if ($slug !== '') {
    header('Location: https://example.com/articles/' . rawurlencode($slug), true, 301);
    exit;
}

また、PHPの出力が始まったあとにheaderを送ろうとして、意図した転送が動いていないこともあります。リダイレクト処理はHTMLを出す前に置き、条件分岐を小さくして確認しましょう。

サイトマップと内部リンクも最終URLへそろえる

リダイレクト設定だけを直しても、サイトマップや内部リンクが古いURLのままだと、Googlebotは毎回リダイレクト前のURLから入り直します。修正後は、次の4つを同じURLにそろえるのがコツです。

  • ページのcanonical
  • XMLサイトマップのURL
  • サイト内のリンクURL
  • リダイレクトの最終到達URL

この4つがそろうと、Search Console上でも「どのURLを評価してほしいのか」が伝わりやすくなります。

AIに渡す調査メモ

リダイレクトエラーは、URLの変化をそのまま貼ると原因が見つかりやすくなります。次の形でメモしてから相談すると、.htaccessやPHPのどこを触るべきか判断しやすいです。

Search Consoleで「リダイレクト エラー」と表示されたURLを調査したいです。

対象URL:
Search Consoleの表示文言:
ブラウザで開いたときの最終URL:
URL検査ライブテストの結果:

確認した転送経路:
1.
2.
3.

.htaccessで関係しそうなルール:
PHP header('Location') を使っている場所:
canonical:
サイトマップ内のURL:
内部リンクで使っているURL:

直したい正規URL:
どこでループ、長いチェーン、空の転送先、不正なURLが起きているかを切り分けてください。

公式情報で確認する

Googleのヘルプでは、リダイレクトエラーの例として、長すぎる転送経路、ループ、URLが長くなりすぎるケース、不正または空のURLが含まれるケースが説明されています。Search Console上の文言と照らし合わせながら、技術的な転送経路を確認しましょう。

次に読む記事