RedirectとRewrite : WordPress

Pocket

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が記述される。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

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

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。