Redirect 301 と RedirectMatch 301 の違いを徹底解説!どちらを使うべき?

ウェブサイトのURLをリダイレクトする際、Apacheの.htaccessファイルでよく使われるのが Redirect 301RedirectMatch 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

/bloghttps://example.com/new-blog にリダイレクト
× /blog/post1https://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

/bloghttps://example.com/new-blog にリダイレクト
× /blog/post1 はリダイレクトされない(Redirect 301 とは異なる動作)

また、正規表現を活用することで、特定のパターンに一致するURLをリダイレクトすることも可能です。

応用例:拡張子ごとリダイレクト

RedirectMatch 301 ^/(.*)\.php$ https://example.com/$1.html

/page.phphttps://example.com/page.html にリダイレクト
/blog/post.phphttps://example.com/blog/post.html にリダイレクト


3. Redirect 301RedirectMatch 301 の使い分け

Redirect 301RedirectMatch 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やユーザー体験の向上につなげましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です