Search Consoleの「リダイレクト エラー」を、まず転送の道順から直す
「ページにリダイレクトがあります」は正常なこともあります。でも「リダイレクト エラー」は、Googlebotが転送先にたどり着けていないサインです。焦ってcanonicalやnoindexを触る前に、まずリダイレクトの通り道を1本に整えましょう。
結論:エラーのURLではなく、転送の途中を疑う
Search Consoleの「リダイレクト エラー」は、記事の本文やタイトルが悪いというより、URLの転送経路でGooglebotが止まっている状態です。代表例は、リダイレクトチェーンが長い、同じURL同士で回り続ける、転送先URLが空、httpとhttpsのルールがぶつかっている、といったケースです。
まずは次の順番で確認します。
- Search Consoleで対象URLと表示文言をメモする。
- ブラウザで開き、最終的に表示されるURLを見る。
- URL検査のライブテストでGooglebotが取得できるか確認する。
- HTTPステータスとLocationヘッダーを確認し、301/302がどこへ向いているか見る。
- .htaccess、PHPのheader関数、CMSの転送設定、meta refreshやJavaScript転送を分けて確認する。
- サイトマップと内部リンクを、リダイレクト前ではなく最終URLへそろえる。
- 修正後に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上の文言と照らし合わせながら、技術的な転送経路を確認しましょう。