用語辞典・エラー・運用

301 Moved Permanently

301 Moved Permanentlyとは

301 Moved Permanently(スリー・オー・ワン・ムーブド・パーマネントリー)は、資源が恒久的に別URLへ移動したことを示し、検索エンジンなどへ移転を伝えるステータスです。

サーバーは通常Location ヘッダーで新しいURIを示します。クライアントは今回の要求を新URIへリダイレクトし、ブックマーク、リンク編集機能、巡回プログラム索引などは将来の参照を置き換えられます。

301は「一時的に別サーバーへ逃がす」コードではありません。旧URIを今後も正本として使うなら302など一時リダイレクトを選びます。

旧URIから新URIへ恒久的な参照先を移すブラウザーだけでなくブックマーク・内部リンク・索引・キャッシュも新しい正本へ更新する
古いWeb資源から新しい資源へ恒久経路を示し、ブラウザー、ブックマーク、リンク、検索索引が新しい参照へ更新される様子を示すピクトグラム図解
図1リダイレクトは利用者を運びますが、内部リンクや正規URL、サイトマップまで自動で直すわけではありません。移転作業として別途更新します。

恒久移転で変えるもの

Location新しいURIを正確に示す

スキーム、ホスト、パス、クエリー文字列の変換規則を試験します。

内部リンク旧URIへの余分な中継点を減らす

画面遷移、本文、素材、API参照を新URIへ直します。

検索案内正規URL・サイトマップを揃える

検索エンジンへ矛盾した正本情報を送らないようにします。

継続運用旧URIを十分長く維持する

外部リンクや古いクライアントが残る期間を監視します。

301と302の差

301は対象の資源へ新しい恒久URIが割り当てられたことを示し、将来の参照も新URIへ変える意図があります。302 Foundは現在一時的に別URIにあり、将来も旧URIを使う意図です。

広報施策、メンテナンス、ログイン後の一時的な行き先に301を使うと、ブラウザーや巡回プログラムへ恒久変更として記憶される場合があります。移転の寿命を先に決めます。

POSTとメソッド変更に注意する

歴史的な互換性により、利用者エージェントはPOSTへの301を追う際にGETへ変更することがあります。要求メソッドと本文を必ず維持して恒久リダイレクトしたい場合は308 Permanent Redirectを検討します。

決済・更新要求をリダイレクトする設計では、クライアント挙動、本文再送、冪等性、認証情報を別発信元へ送らないことを確認します。GETページの移転と同じ感覚で扱いません。

キャッシュとリダイレクトの連鎖

301は明示的なキャッシュ制御がなくても、推測によりキャッシュされる場合があります。誤設定をすぐ取り消してもクライアントやCDNに残る可能性があるため、公開前に検証環境と一時リダイレクトで変換規則を確かめます。

旧A→旧B→新Cの連鎖を残すと遅延と故障点が増えます。可能ならA・BからCへ直接リダイレクトし、転送ループ、ホストをまたぐTLS、問い合わせ文字列の保持、URL符号化を自動試験します。

「SEO効果を渡すコード」だけではない

検索エンジンのクローラーは301を移転信号として使いますが、検索評価がどの程度・いつ移るかをステータス一つで保証することはできません。新旧ページの内容対応、内部リンク、正規URL、重複ページ、巡回可能性、旧新URLの継続性を揃えます。

301は資源の正本URIを恒久的に変えたことを示します。Locationだけ置くのではなく、メソッド挙動、キャッシュ、リンク、正規URL、サイトマップ、リダイレクトの連鎖を移転全体として管理します。

恒久的なURI移転とメソッド処理:RFC 9110「301 Moved Permanently」

関連用語