ウェブサイトの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やユーザー体験の向上につなげましょう。
