転送が変えるのは経路であり元のリンクではない
被リンクはリンク元ページにあるHTMLリンクです。その宛先が301を返すとクライアントはLocationをたどれますが、発行者のhrefが自動的に書き換わるわけではありません。リンク元、転送するURL、最終文書を分けて記録してください。移転は適切な内容へのアクセスを維持できますが、中継アドレスを一つ増やすことは新しい編集上の推薦を得ることではありません。リンクの存在と到達経路は別の確認項目です。
RFC 9110 · 301 / 302 / 307 / 308
管理できるURLと担当者を明確にする
変更できるのは管理権限のあるホストやアプリケーションのルールだけです。外部のリンク元ページはその発行者が管理します。修正前に両方の担当を記録しましょう。自分の内部リンクを更新し、適切なら発行者にも参照先の変更を依頼しますが、古いURLを使う読者の経路も維持します。このガイドはGoogleのURL経由のリンク作成、期限切れドメインの取得、メッセージ送信を行いません。権限のないページを変更する操作も含みません。
内容と目的に基づいて移転先を対応付ける
旧URL、その目的、予定する代替先、内容が対応する根拠を残します。自分のリンク記録、ナビゲーション、サイトマップを確認してください。一つのエクスポートが完全な一覧とは限りません。言語、商品、意味のあるクエリの違いを保ち、すべてをホームへ送るだけの処理は避けます。内容を恒久的に削除して適切な代替がない場合は、リソース不在の応答が正しいこともあります。演習内の同等性は明示した設定で、機械による品質判定ではありません。
恒久移転と一時移転を意図的に選ぶ
恒久移転には301または308、元の場所が戻る一時移転には302または307を選びます。Googleはこれらを異なる正規化シグナルとして説明していますが、ローカルテストから最終的な選択は分かりません。本例はGETです。POSTなどを受けるエンドポイントでは、方法が保持されるかを別途確認してください。古い恒久転送は修正後もブラウザやプロキシのキャッシュに残る場合があります。演習サーバーは繰り返し確認できるようno-storeを返します。
七つの修正前後のケースを再現する
キットはloopback上で本物のHTTPサーバーを起動します。二つの設定でリンク元ページのリンクは同一のまま、宛先のルーティングだけが変化します。ケースと段階を選び、ブラウザの最後のアドレスだけでなく応答を一つずつ読んでください。ループは同じ場所へ再送する前に停止します。正しく動いている対照例は変更しません。これは自分で再現する工学的な演習であり、あなたのサイトを巡回した証拠や検索エンジンの挙動の再現ではありません。
| ID | 意図した結果 | 修正前 | 修正後 |
|---|---|---|---|
| R01 | 旧ガイドには/guideという適切な代替がありますが、旧URLは404です。 | 404 /r1/old-guide | 301 /r1/old-guide → 200 /guide |
| R02 | ガイドへは/middle経由で到達します。追加の段階は省けます。 | 301 /r2/old-guide → 301 /middle → 200 /guide | 301 /r2/old-guide → 200 /guide |
| R03 | 旧URLと/r3/loopが相互に転送し、終端文書に到達しません。 | 301 /r3/old-guide → 301 /r3/loop · URLの繰り返し:再リクエスト前に停止 | 301 /r3/old-guide → 200 /guide |
| R04 | 読者はガイドを求めていますが/homeは一般ナビゲーションです。両段階とも200で終わります。 | 301 /r4/old-guide → 200 /home | 301 /r4/old-guide → 200 /guide |
| R05 | 内容は恒久削除され、/homeは目的を満たしません。 | 301 /r5/old-guide → 200 /home | 410 /r5/old-guide |
| R06 | 元のサービスは戻る予定で、/holdingは一時のお知らせです。 | 301 /r6/old-guide → 200 /holding | 302 /r6/old-guide → 200 /holding |
| R07 | 旧ガイドはすでに一回の301で適切な代替へ到達します。 | 301 /r7/old-guide → 200 /guide | 301 /r7/old-guide → 200 /guide |
R01 · 移転先への対応がないページ
宣言した代替先へ一段の恒久転送を設定します。
同じ旧URLが301を返し、/guideが想定した本文と200を返します。
R02 · 動くが余分な中継があるチェーン
旧URLを/guideへ直接向け、必要な中継先のルールは残します。
三回のリクエストが二回になり、最終内容と元のリンクは同じです。
R03 · 二つのURLによるループ
入口のルールを/guideへの直接対応に変更します。
繰り返しによる停止がなくなり、301と200の二つの応答になります。
R04 · ホームが200でも内容が違う
任意の成功ページではなく適切な/guideへ向けます。
最終パスと本文も確認します。Googleによるsoft 404判定を観測したものではありません。
R05 · 削除済みで同等の代替がない
この条件では410を返し、古い内部参照を除きます。
旧URLは利用不可のページと410を返します。代替先や順位回復を作り上げません。
R06 · 一時移転を恒久と宣言している
このGET例は302とし、サービスを戻す予定も記録します。
同じお知らせに301ではなく302で到達します。古いキャッシュと検索処理は別に確認します。
R07 · 正しい恒久転送を維持する
動作中の対応を対照例として維持します。
前後の証拠は同じです。不要な修正や順位改善を捏造しません。
公開後に経路全体を検証する
承認された変更を公開したら、実際のプロキシやCDNを通して公開URLを検証します。最初のステータス、各Location、最終URL、応答、期待する本文を保存してください。重要なクエリ、プロトコル、ホストの違いも意図的に試します。クロール許可、canonical、インデックス指示は別の項目として確認します。ループと古い中継先も調べ、証拠と担当者を残してください。一回の成功応答だけではGoogleが変更を再取得したことも、順位が上がることも分かりません。
インデックス登録、正規URLの選択、流入、順位は測定しません。引き継がれる評価の割合も計算しません。
対応表を長期的に維持する
日付付きの対応表を保ち、CMSやルーティングを変更した後は古い重要リンクを再確認します。Googleの移転ガイドは可能な限り長く、一般に少なくとも一年、転送を維持するよう勧めています。読者が旧リンクを使い続けるならさらに長い維持が役立ちます。内部リンクとサイトマップを現在の宛先に更新し、既知のリンク元・宛先ペアと許可された検索データを観察してください。提供元の集計は日時や範囲が違うため、画面の更新遅れだけを転送失敗と判断しないでください。
Python 3.10以上が必要です。ZIPをローカルに展開します。検証コマンドは一時的なループバックサーバーを起動し、全事例をテストしてJSONを出力した後に停止します。外部サイトには接続しません。