Domain 5 / 225
リダイレクトは URL 移転を Google に正しく伝える仕組み
リダイレクト の要点
リダイレクトは URL 移転を Google に伝える仕組みで、永続(301 / 308)は新 URL を canonical シグナル、一時(302 / 307)は元 URL を検索結果に残す。サーバー側が最も確実、JavaScript リダイレクトはレンダリング失敗で読まれないリスクがある
なぜこれを学ぶか
リダイレクトは サイト移転 / URL 構造変更で SEO 評価を引き継ぐ唯一の手段。 種類を間違えると「新ドメインに移ったのに旧 URL の評価が引き継がれない」「URL を変えただけで順位が消える」といった大きな流入損失が起きる。
EC のリプレイス、CMS 移行、HTTP → HTTPS、ドメイン統合、URL 構造刷新といった大型施策では、リダイレクトの設計品質がプロジェクトの成否を決める。
学ばないと起きること
| よくある事故 | 被害 |
|---|---|
| 恒久的な URL 変更で 302 を使う | 元 URL が検索結果に残り続け、新 URL の評価が育たない |
| サイト移転で 1 段階リダイレクトせず、複数段ホップさせる | リダイレクトチェーンが長すぎて Google が追跡を諦める(5 ホップが上限) |
| HTTP → HTTPS の 301 を入れ忘れる | 同じページが HTTP / HTTPS の両 URL でインデックスされ、評価が分散 |
JavaScript リダイレクト(window.location)だけで済ます | Googlebot のレンダリングが失敗するとリダイレクト自体が認識されない |
| 旧 URL を 404 にして新 URL に置き換える | リンクシグナルがゼロから再構築になり、順位が長期間下がる |
| Crypto redirect(人間向けの「移転しました」リンクのみ)に頼る | Google が認識する保証がなく、評価引き継ぎがほぼ期待できない |
| meta refresh の遅延秒数を 0 と非 0 で混同 | 0 秒は永続、1 秒以上は一時扱いになる仕様を知らずに想定外の SEO 効果に |
学ぶメリット
- サイト移転 / URL リプレイスで評価を 100% に近い形で新 URL に引き継げる
- リダイレクトチェーンや混在問題を Search Console で即座に切り分けられる
- 「301 と 308 の違い」「302 と 307 の違い」をクライアントに即答できれば、技術 SEO の解像度の高さを示せる
- HTTP → HTTPS / www 統一 / 旧キャンペーン URL の整理を Google 仕様に沿って組める
仕組み
永続リダイレクトと一時リダイレクトの違い
Google が両者を区別する理由は明確で、検索結果に出す URL が変わる。
| タイプ | Google の挙動 |
|---|---|
| 永続(Permanent) | 新 URL を canonical シグナルとして扱い、検索結果に出す |
| 一時(Temporary) | 元 URL を検索結果に残す(新 URL は別シグナル次第) |
「もう元 URL は使わない」確信があるなら永続、「すぐ戻す可能性がある」なら一時を使う。
Google が認識するリダイレクト一覧(信頼性が高い順)
サーバーサイドが最も確実。JavaScript リダイレクトはレンダリング失敗のリスクがあるため、他の方法が使えない時の最終手段。
| 方法 | 永続 | 一時 |
|---|---|---|
| サーバーサイド HTTP ステータス | 301 / 308 | 302 / 303 / 307 |
| meta refresh(HTML) | content="0" 秒 | content="1 秒以上" |
| HTTP refresh ヘッダ | content="0" 秒 | content="1 秒以上" |
JavaScript window.location | 永続扱い(レンダリング前提) | - |
| Crypto redirect(手書きリンク) | 認識されないことが多い | - |
各 HTTP ステータスコードの意味
| ステータス | 意味 | リンクシグナル | 主な用途 |
|---|---|---|---|
| 301 | Moved Permanently | ほぼ完全に転送 | サイト統合、URL 構造変更(恒久的) |
| 302 | Found | 元 URL の評価を維持 | キャンペーン期間中の一時的な切り替え |
| 303 | See Other | 元 URL の評価を維持 | フォーム送信後のリダイレクトなど |
| 307 | Temporary Redirect | 元 URL の評価を維持 + HTTP メソッド維持 | POST のままリダイレクトしたい場合 |
| 308 | Permanent Redirect | ほぼ完全に転送 + HTTP メソッド維持 | POST のまま恒久転送したい場合 |
301 と 308、302 と 307 の違いは「HTTP メソッドを維持するか」のみ。SEO 観点ではほぼ同等。
リダイレクトチェーンとループ
Google は最大 5 ホップまでリダイレクトを追跡する。それを超えると追跡を諦め、404 と同じ扱いになる。 複数段リダイレクトしている場合は、可能な限り 1 段階に短縮する。
例:
- NG:
/old → /old2 → /new1 → /new2 → /current(4 ホップ、シグナル減衰) - OK:
/old → /current(1 ホップ、シグナル最大)
キー概念
サーバーサイドリダイレクトの実装例
PHP で 301 を返す例。
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.example.com/newurl');
exit();
Apache .htaccess の例。
# 単純な永続リダイレクト
Redirect permanent "/old" "https://example.com/new"
# 一時リダイレクト
Redirect temp "/two-old" "https://example.com/two-new"
mod_rewrite を使った正規表現リダイレクト。
RewriteEngine on
RewriteRule "^/service$" "/about/service" [R=301]
NGINX の例。
location = /service {
return 301 $scheme://example.com/about/service;
}
meta refresh の使い分け
サーバー設定が触れない CMS / ホスティングで使う代替手段。
重要なのは秒数で、0 は永続、1 以上は一時に解釈される。
<!-- 永続扱い(0 秒)-->
<meta http-equiv="refresh" content="0; url=https://example.com/newlocation">
<!-- 一時扱い(5 秒)-->
<meta http-equiv="refresh" content="5; url=https://example.com/newlocation">
ユーザー体験的には 0 秒以外を入れると「移転中…」のような中継ページに使えるが、SEO 観点では一時扱いになるので注意。
JavaScript リダイレクト
サーバーサイドや meta refresh が使えない時の最終手段。Google はレンダリング後に window.location を実行して認識するが、レンダリングが失敗すると気づかれないリスクがある。
<head>
<script>
window.location.href = "https://www.example.com/newlocation";
</script>
</head>
可能なら避ける。やむを得ない場合は、合わせて <noscript> でリンクを示すと安全。
alternate name(旧 URL の検索結果残留)
URL 移転後も、Google は一定期間「旧 URL」と「新 URL」の両方を覚えている。
旧 URL は新 URL の alternate name(代替名)として扱われ、ユーザーのクエリが旧 URL に強く一致する場合は検索結果に旧 URL が出ることがある。
これは仕様で、ユーザーが新ドメインに慣れるにつれて自然に消えていく。
よくある誤解
| よくある誤解 | 実際のところ | 出典 |
|---|---|---|
| 302 と 301 は SEO 的にほぼ同じ | 302 は元 URL を検索結果に残す(一時扱い)。恒久転送には 301 を使う | 301 リダイレクト |
| 301 と 308 は別物 | SEO 観点ではほぼ同等。違いは「HTTP メソッドを維持するか」だけ | 同上 |
| 302 と 307 は別物 | 同上。SEO 観点では同等、違いはメソッド維持の有無 | 同上 |
| meta refresh は SEO に悪い | 0 秒は永続、1 秒以上は一時として正しく解釈される。サーバーサイドが使えない場合の有効な選択肢 | 同上 |
| JavaScript リダイレクトでも 301 と同じ評価 | レンダリング失敗で認識されないリスクがある。最終手段 | 同上 |
| 5 段階リダイレクトしても Google は全部追ってくれる | 最大 5 ホップで追跡を諦める。それを超えると 404 扱い | robots.txt の解釈 |
| サイト移転後すぐに旧 URL は検索結果から消える | 一定期間 alternate name として残る。ユーザーの慣れに伴い自然に消える | 301 リダイレクト |
| 「移転しました」のリンクを置けば Google が追ってくれる | crypto redirect は認識されないことが多い。サーバーサイドリダイレクトを使う | 同上 |
実務での適用
サイト移転時の標準フロー
- 旧サイトの全 URL → 新サイトの対応 URL のマッピング表を作成
- すべてに 301 を設定し、リダイレクトチェーンを作らない(必ず最終 URL に直行)
- 新ドメインの canonical / sitemap / hreflang を新 URL で更新
- Search Console「アドレス変更ツール」で Google に通知
- 旧サイトのリダイレクトを最低 1 年は維持する
- 新サイトの内部リンクは旧 URL を経由しないよう、すべて新 URL に張り直す
よく使う リダイレクトパターン
| 目的 | リダイレクトの方向 |
|---|---|
| HTTP → HTTPS の統一 | 全 HTTP URL → 同パスの HTTPS URL(301) |
| www / 非 www の統一 | 一方からもう一方へ(301) |
| 末尾スラッシュの統一 | あり / なしどちらかへ(301) |
| 旧キャンペーンページの整理 | 旧 URL → 関連する現行ページ(301) |
| 一時メンテナンスページ | 元 URL → メンテ告知ページ(302 / 307) |
| 削除した記事の救済 | 旧 URL → 関連カテゴリ or 検索ページ(301) |
リダイレクトチェーンを Search Console で発見する
Search Console の URL 検査ツールで個別 URL のリダイレクトホップを確認できる。 大量に確認したい場合は Screaming Frog 等のクローラーで「Redirect Chains」レポートを取り、2 ホップ以上を 1 ホップに短縮する。
トラブル別の対処
| 症状 | 確認すべきこと |
|---|---|
| 移転後も旧 URL が検索結果に残り続ける | alternate name の仕様。301 が正しく設定されていれば数ヶ月で自然消滅 |
| 新 URL の順位がなかなか上がらない | リダイレクトチェーンの有無、内部リンクが旧 URL を経由していないか、canonical / sitemap が新 URL を指しているか |
| Search Console で「リダイレクトエラー」が増えた | リダイレクトループ、5 ホップ超え、リダイレクト先が 404 / 5xx を返していないか |
| HTTPS 化したのに HTTP URL が検索結果に残る | HTTP → HTTPS の 301 が漏れている、HSTS の設定確認、サイトマップを HTTPS で更新 |
| キャンペーン終了後の 302 を 301 に戻したい | 既存の 302 を 301 に変更すれば Google が次回クロール時に認識する |
公式ソース
自己テスト
Q1. URL を恒久的に変えたい時、301 と 302 のどちらを使うか?
301(Moved Permanently)。Google は永続リダイレクトと判断し、新 URL を canonical シグナルとして扱う。 302 は一時的な切り替え扱いになり、元 URL の評価が維持されるので恒久的な URL 変更には不向き
Q2. 301 と 308 の違いは?
SEO 観点ではほぼ同等。両者とも永続リダイレクトとして扱われる。 違いは「HTTP メソッドを維持するか」。308 は POST リクエストのまま転送するが、301 は GET に変換することがある。Web ページの単純な転送なら 301 で十分
Q3. meta refresh の content 属性で 0 秒と 5 秒の SEO 上の違いは?
0 秒の meta refresh は永続リダイレクト扱い、1 秒以上は一時リダイレクト扱いになる。
即時転送したい場合は必ず content="0" にする
Q4. JavaScript リダイレクト(window.location)でも 301 と同じ SEO 評価を期待できるか?
期待できない。Google はレンダリング後に JS リダイレクトを認識するが、レンダリングが失敗すると気づかれない。 サーバーサイドや meta refresh が使えない場合の最終手段
Q5. リダイレクトを何段階まで連鎖させて大丈夫か?
最大 5 ホップ。それ以上はリダイレクトを追跡せず 404 と同じ扱いになる。 SEO 評価のシグナル減衰も起きるので、可能な限り 1 段階(旧 URL → 最終 URL に直行)に短縮する
Q6. サイト移転後、旧 URL が検索結果に残り続けるのは設定ミスか?
設定ミスとは限らない。Google は旧 URL を新 URL の alternate name として一定期間覚えており、ユーザーのクエリが旧 URL に強く一致する場合は表示することがある。 ユーザーが新ドメインに慣れるにつれて自然に消える
Q7. サイト移転時に旧サイトのリダイレクトはいつまで維持すべきか?
最低 1 年は維持するのが推奨。 Google が新 URL に完全に切り替えるまで時間がかかり、被リンクの源も古い URL を残し続けるため、早期に外すと評価がリセットされるリスクがある
Q8. キャンペーン期間中だけ別ページに飛ばしたい場合、どのリダイレクトを使うか?
302 または 307。一時リダイレクトとして元 URL を検索結果に残せる。 キャンペーン終了後にリダイレクトを外せば、元の URL が検索結果でそのまま機能する
これらの内容を採点付きで挑戦したい場合は、本ドメインのプロ試験で 5 問形式で確認できる。