WordPressはパーマリンクをカスタマイズできる([設定] → [パーマリンクの設定])。
パーマリンクを変更したとき書き込み権限があればhtaccessが作成または更新される(書き込み権限がないときはhtaccessを手動で修正する)。
パーマリンクを変更したときhtaccessにはmod_rewrite(mod_rewriteはApacheのモジュール2)が記述される。
ドキュメントルートのwordpressディレクトリへインストールする場合の基本例。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f ----- (1)
RewriteCond %{REQUEST_FILENAME} !-d ----- (2)
RewriteRule . /wordpress/index.php [L] ----- (3)
</IfModule>
# END WordPress
(1)(2) 実際のファイルまたはディレクトリが存在しなければ(3)の処理を実行する3。
(3) (1),(2)を満たすアクセスを/wordpress/index.phpへRewriteして処理を終了する。
デフォルトは下記の通り。
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]
パーマリンクを下記の通り設定した際のhtacess
/%category%/%post_id%.html
RewriteEngine On -- (1)
RewriteCond %{HTTPS} on -- (2)
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L] -- (3)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index.php$ - [L] -- (4)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress
(1), (2), (3)
RewriteEngine On<br />RewriteCond %{HTTPS} on <br />RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L]
の説明は下記のサイトがとても分かりやすい。
» トーハム紀行: mod_rewriteでディレクトリ別にSSLのON/OFFを切り替える
(4) ドキュメンルート直下のindex.htmlはRewriteしない。
[1] mod_rewriteはApacheの設定ファイルhttpd.confに記述してもよいが本記事はhtaccessを使うことを前提とする。
[2] mod_rewriteはApacheのモジュールなのでインストールされていない場合やされていてもhtaccessを使用できない場合はパーマリンクを変更できない。
[3] RewriteCondはRewrite Conditionの略。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。