.htaccessでリダイレクト設定を行う方法として、「Redirect」で紹介しているサイトと「Rewrite」で紹介しているサイトを見かけますが、どちらが正しいのか迷う方もいるのではないでしょうか?
そういった方の為に、簡単に違いを紹介したいと思います。
まず違いとして上げられる点は、Rewriteはmod_rewriteというWebサーバーの機能拡張を利用する機能で、実はサーバーによっては使えない場合があります。
ただ特徴としては、Redirectより細かい設定が出来るのが特徴です。
Redirectはサーバーの機能拡張を利用しないので、単純なリダイレクトの場合はをこちらを使うと良いと思います。
記述は以下のように記載します
- Redirect parmanent / http://www.hogehoge.com/
「Redirect parmanet」を記入し、半角スペースの後にリダイレクト元のパスを記載します。
その後に半角スペースを入れ、リダイレクト先のURLを記載します。
リダイレクト元は、.htaccessが置かれた場所を起点としたパスを記述します。例えば.htaccessを置いているフォルダ内のある「/area/」フォルダに適用する場合はリダイレクト元のパスは「/area/」と記述します。パスやURLは正規表現が利用可能です。
リダイレクトの為に細かな条件を指定したい場合は、Rewriteを使いましょう。ほとんどのサーバーで利用できると思いますが、もしサーバーが利用を許可していない場合は、あきらめましょう。
記述は方法は以下のように記載します。
- RewriteEingin On
- RewriteCond %{REQUEST_URI} ^/test/.*$
- RewriteRule ^(.*)$ http://www.hogehoge.com/$1 [R,L]
1行目はRwriteを使う上で必須の宣言となります。
2行目でRewriteRuleで記述しているリダイレクトの適用条件を記入します。
最後にRedirectと同様、左に転送元パス、右に転送先URLを記載します。ここでも正規表現が利用可能です。
今回はRedirectとRewriteの違いう事で、細かな記述については割愛しましたが、機会があれば紹介したいと思います。
この2つの方法はリダイレクトをするという目的上は同じように使えますので、環境や自分の使いやすさで選んで使えば良いと思います。