301 Moved Permanentlyとは
301 Moved Permanently(スリー・オー・ワン・ムーブド・パーマネントリー)は、資源が恒久的に別URLへ移動したことを示し、検索エンジンなどへ移転を伝えるステータスです。
サーバーは通常Location ヘッダーで新しいURIを示します。クライアントは今回の要求を新URIへリダイレクトし、ブックマーク、リンク編集機能、巡回プログラム索引などは将来の参照を置き換えられます。
301は「一時的に別サーバーへ逃がす」コードではありません。旧URIを今後も正本として使うなら302など一時リダイレクトを選びます。

恒久移転で変えるもの
スキーム、ホスト、パス、クエリー文字列の変換規則を試験します。
画面遷移、本文、素材、API参照を新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」