ウェブサイトのURLをリダイレクトする際、Apacheの.htaccess
ファイルでよく使われるのが Redirect 301
と RedirectMatch 301
です。
どちらも「301リダイレクト(恒久的なリダイレクト)」を行いますが、動作の仕組みが異なります。この記事では、それぞれの違いと、どちらを使うべきかを解説します!
1. Redirect 301
とは?
Redirect 301
は、シンプルなリダイレクトを設定するためのディレクティブです。基本的に「指定したパスを特定のURLにリダイレクトする」という機能を持ちます。
書き方
Redirect 301 /old-page https://example.com/new-page
動作
/old-page
にアクセスすると、自動的にhttps://example.com/new-page
にリダイレクトされる。- ただし、サブディレクトリやファイルもリダイレクトの対象になる。
例
Redirect 301 /blog https://example.com/new-blog
◎/blog
→ https://example.com/new-blog
にリダイレクト
× /blog/post1
も https://example.com/new-blog/post1
にリダイレクトされてしまう
「完全一致のURLだけリダイレクトしたい」場合には適していません。
2. RedirectMatch 301
とは?
RedirectMatch 301
は、**正規表現(正則表現)**を使って、より柔軟なリダイレクトを設定できます。
書き方
RedirectMatch 301 ^/old-page$ https://example.com/new-page
動作
- 正規表現を使ってURLを指定できる。
/old-page
のみに適用し、/old-page/anything
には影響を与えない。
例
RedirectMatch 301 ^/blog$ https://example.com/new-blog
◎/blog
→ https://example.com/new-blog
にリダイレクト
× /blog/post1
はリダイレクトされない(Redirect 301
とは異なる動作)
また、正規表現を活用することで、特定のパターンに一致するURLをリダイレクトすることも可能です。
応用例:拡張子ごとリダイレクト
RedirectMatch 301 ^/(.*)\.php$ https://example.com/$1.html
◎/page.php
→ https://example.com/page.html
にリダイレクト
◎/blog/post.php
→ https://example.com/blog/post.html
にリダイレクト
3. Redirect 301
と RedirectMatch 301
の使い分け
Redirect 301 | RedirectMatch 301 | |
---|---|---|
指定方法 | URLのパスを指定 | 正規表現でパターンを指定 |
サブディレクトリの影響 | 親ディレクトリを指定するとサブディレクトリもリダイレクトされる | 完全一致のリダイレクトが可能 |
複数のURLをまとめてリダイレクト | 不可 | 可能(正規表現で対応) |
適用例 | 単純なリダイレクト(例:/old-page → /new-page ) | 特定のパターンのリダイレクト(例:*.php → *.html ) |
簡単なリダイレクトなら Redirect 301
、細かい条件で制御したいなら RedirectMatch 301
を使いましょう!
4. まとめ
Redirect 301
は、簡単なリダイレクト向け。- ただし、指定したパス以下のサブディレクトリも影響を受ける。
RedirectMatch 301
は、正規表現を使って柔軟にリダイレクト可能。- 「特定のURLのみ」「拡張子を変更」「複数のURLを一括処理」などができる。
どちらを使うべき?
- 単純なリダイレクトなら →
Redirect 301
- 特定のURLのみ影響を与えたいなら →
RedirectMatch 301
- 複数のURLや特定の条件でリダイレクトしたいなら →
RedirectMatch 301
リダイレクトの設定を適切に行い、SEOやユーザー体験の向上につなげましょう。