はじめに
Web開発をしていると、あるURLから別のURLに自動的に移動する「リダイレクト(Redirect)」に出会うことがよくあります。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
この動きは HTTP の 3xx 系ステータスコードによって制御されており、SEO やユーザー体験にも関わる重要な仕組みです。
書こうと思ったきっかけ
個人開発中のウェブサイトでURL構造を変更した際、古いURLにアクセスしたユーザーを新しいページに転送する必要がありました。
その際、ステータスコードの使い分けに迷ったため、整理する目的でこの備忘録を作成しました。
3xx系ステータスコード一覧
以下は代表的な 3xx 系の HTTP ステータスコードです:
参考文献
301 Moved Permanently(恒久的な移動)
- 古いURLは今後使われず、新しいURLに恒久的に移動したことを示します。
- ブラウザや検索エンジンは、新しいURLをキャッシュします。
- SEOの観点でもリダイレクト先に評価が引き継がれます。
302 Found(一時的な移動)
- リクエストされたリソースが一時的に別の場所にあることを示します。
- 将来的には元のURLが再び使われる前提です。
- 検索エンジンは元のURLをインデックスし続けます。
303 See Other(POST → GETのリダイレクト)
- フォーム送信後に他のページへリダイレクトする際によく使用されます。
- POSTメソッドをGETに変換してリダイレクトされます。
307 Temporary Redirect(302の厳密版)
- 302と似ていますが、元のリクエストメソッド(GET/POSTなど)を保持します。
- セキュリティが重要なAPIなどでよく利用されます。
308 Permanent Redirect(301の厳密版)
- 301と同様に恒久的な移動ですが、元のメソッドを保持したままリダイレクトされます。
- HTTP/1.1 以降の新しい仕様です。
実際の使用例(Apacheの.htaccess)
# 恒久的なリダイレクト(301)
Redirect 301 /old-page.html https://example.com/new-page.html
# 一時的なリダイレクト(302)
Redirect 302 /temporary.html https://example.com/maintenance.html
まとめ
3xx ステータスコードは、ユーザー体験の向上やSEOの最適化に大きく関わる重要な要素です。
特に301と302の使い分けを意識することで、意図しない評価の分散やキャッシュのトラブルを防ぐことができます。
今後もURL設計やページ移動時に役立てていきたいです!