.htaccessによるリダイレクト
.htaccessファイルは、Apacheサーバー上で動作する設定ファイルです。このファイルに記述することで、様々な設定を行うことができます。その中でも、リダイレクトは非常に重要な機能の一つです。
リダイレクトとは、ユーザーがアクセスしたURLを別のURLへ転送する仕組みです。
サイトリニューアルや移転、ページの削除など様々な場面で利用されます。
リダイレクトの種類
.htaccessによるリダイレクトには、主に以下の種類があります。
1. 永久リダイレクト (301リダイレクト)
301リダイレクトは、URLが永久に変更されたことを示すステータスコードです。検索エンジンに対してもURL変更を通知するため、SEO対策にも有効です。
2. 一時リダイレクト (302リダイレクト)
302リダイレクトは、URLが一時的に変更されたことを示すステータスコードです。検索エンジンに対してもURL変更を通知しないため、SEO対策には影響を与えません。
3. その他のリダイレクト
上記以外にも、様々なリダイレクト方法があります。
- 特定のファイル拡張子を持つURLのみをリダイレクトする
- ディレクトリ単位でリダイレクトする
- サーチエンジンボットのみをリダイレクトする
.htaccessファイルへの記述方法
.htaccessファイルへの記述方法は、リダイレクトの種類によって異なります。
永久リダイレクト (301リダイレクト)
Redirect 301 /old/url https://www.example.com/new/url上記例では、/old/url にアクセスしたユーザーを https://www.example.com/new/url へ転送します。
一時リダイレクト (302リダイレクト)
Redirect 302 /old/url https://www.example.com/new/url上記例では、/old/url にアクセスしたユーザーを https://www.example.com/new/url へ一時的に転送します。
リダイレクトの書き方:その他の方法
正規表現によるリダイレクト
正規表現を使用することで、より複雑な条件でリダイレクトを設定できます。
# /old/ 以下に続く任意の文字列 ((.+)) を /new/ 以下に置き換えてリダイレクトします。
# ※[R=301]を[R=302]に書き換えると301リダイレクトになります。
RewriteEngine On
RewriteRule ^old/(.+)$ https://www.example.com/new/$1 [R=301]RewriteCondによる条件分岐
RewriteCondディレクティブを使用することで、条件分岐によるリダイレクトを設定できます。
#/old/ で始まるURLのみを /new/ へ301リダイレクトします。
# ※[R=301]を[R=302]に書き換えると301リダイレクトになります。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/old/
RewriteRule ^/old/ https://www.example.com/new/ [R=301]RedirectPermanent / RedirectTemporary
RedirectPermanent / RedirectTemporaryディレクティブを使用することで、301リダイレクトと302リダイレクトを簡単に設定できます。
#/old/ を /new/ へ301リダイレクトします
RedirectPermanent /old/ https://www.example.com/new/
#/old/ を /new/ へ302リダイレクトします
RedirectTemporary /old/ https://www.example.com/new/.htaccessファイルの設置場所
.htaccessファイルは、リダイレクトを設定したいディレクトリに設置する必要があります。
- ドメイン全体にリダイレクトを適用したい場合は、ドキュメントルート (
/public_html/) に設置します。 - サブディレクトリのみリダイレクトしたい場合は、そのサブディレクトリ内に設置します。
まとめ
以上が.htaccessによる301・302リダイレクトの方法のご紹介になります。Apache http serverの設定にはリダイレクトの他にも様々な機能がありますので、今後も少しづつ紹介していこうと思います。


