RedirectとRewriteはともにリダイレクトする。違いの1つはRedirectはURLを書き換えるがRewiriteはURLを書き変えない。
Redirect
Redirect permanent /sample/ http://wwww.example.com/index.php
sampleディレクトリ以下をドキュメントルートのindex.phpへリダイレクトする。 RedirectはURLをhttp://www.example.com/index.phpに書き換えてリクエストする。
Rewrite
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /example/ RewriteRule . /index.php [L] </IfModule>
sampleディレクトリ以下をドキュメントルートのindex.phpへRewriteを使ってリダイレクトする。 URLの書き換えは行われずhttp://www.example.com/sample/のリクエストのままhttp://www.example.com/index.phpが呼ばれる。
WordPressとRewrite
WordPressはパーマリンクをカスタマイズできる([設定] → [パーマリンクの設定])。パーマリンクを変更すると書き込み権限を持つhtaccessは自動で更新される(書き込み権限がないときはhtaccessファイルを手動で修正する)。パーマリンクをデフォルトから変更するとhtaccessにmod_rewriteが記述される。
</p> <h1>BEGIN WordPress</h1> <p><IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L] </IfModule></p> <h1>END WordPress</h1> <p>
上記はWordPressへのリクエストをリダイレクトして/wordpress/index.phpを呼び出す。このときRewriteはリクエストされたURLを書き換えずにリダイレクトする。そのためindex.phpは元のリクエストのURLを知ることができURLに応じた処理を行う。
仮に下記のようにRedirectを使うとURLが/wordpress/index.phpに書き換えられindex.phpは元のリクエストのURLを知ることができない。
Redirect temp /wordpress/ http://wwww.example.com/wordpress/index.php
» HTTPリダイレクト Others htaccess
» htaccessでリダイレクト機能を利用する方法 | BULANCO BLOG