パーマリンクの設定とhtaccess・mod_rewrite : WordPress

Pocket

WordPressはパーマリンクをカスタマイズできる([設定] → [パーマリンクの設定])。

パーマリンクを変更したとき書き込み権限があればhtaccessが作成または更新される(書き込み権限がないときはhtaccessを手動で修正する)。

パーマリンクを変更したときhtaccessにはmod_rewrite(mod_rewriteはApacheのモジュール2)が記述される。

パーマリンクを変更したときのhtaccess記述例

ドキュメントルートの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して処理を終了する。

» mod_rewriteの考え方。 – こせきの技術日記

NTT コムの場合のhtaccess

デフォルトは下記の通り。

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しない。

リンク

» .htaccess – Rewrite

[1] mod_rewriteはApacheの設定ファイルhttpd.confに記述してもよいが本記事はhtaccessを使うことを前提とする。
[2] mod_rewriteはApacheのモジュールなのでインストールされていない場合やされていてもhtaccessを使用できない場合はパーマリンクを変更できない。
[3] RewriteCondはRewrite Conditionの略。

コメント

No comments yet.

コメントの投稿

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