WordPressのパーマリンク設定を変更した際に、変更したパーマリンクでアクセスしてうまくいかない場合のチェック項目を調べました。
.htaccessがあるか。書き換えられているか
ドキュメントルートに.htaccessファイルがあるかどうかを確認します。
また、下記のようになっているかも確認します。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
これは、ドキュメントルート以下にもしそのファイルやフォルダが実際に置いてあればそれを表示し、もしなければリライトルールを適用してルートのindex.phpにリクエストを渡す、というものです。
つまり、もし、example.com/example.html といったファイルを実際に設置すればWordPressは動かずにそのファイルが表示されます。
もしなければ、それはWordPressが生成するページであろうということで、WordPressに動いてもらって作ってもらいます。
mod_rewriteモジュールがロードされているかの確認
上記のリライトが動くためには、Apacheのモジュールであるmod_rewriteがロードされている必要があります。
ロードされているかどうかを確かめるには、適当な場所にtest.phpなどを作成し、
phpinfo();
と書き込んでそのURLにアクセスします。
ページ内をmod_rewriteで検索して、もしなかったらhttpd.conf
ファイルを開き、
#LoadModule rewrite_module modules/mod_rewrite.so
を探し、冒頭のコメント#を削除します。
AllowOverride Allになっているか
それでもまだ動かない場合、httpd.confファイル内で.htaccessの動作が必要なできるだけ下層の<Directory>セクションを探します。たとえば、<Directory “/var/www/html”>などです。
その中を確かめてAllowOverride All
になっているかどうかを確かめます。
値はAllでなくてもよく、細かい設定をするほど安全になりますので、http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
などを参考に自分の条件で設定をします。
セキュリティ
.htaccessが書き換えられて、セキュリティ的におかしなことになる場合があります。そのため、パーミッションをできるだけ厳しく設定して読み込みしかできなくするなどの必要があります。
高速化
.htaccessの動作はけっこう重たいそうで、下記の本を参考に、.htaccessではなくconfファイルでリライトを設定する方法が書かれているので、そちらを参考にするのも良いと思います。
間違いなどがあったら教えて下さいm(__)m。
コメント
コメント一覧 (2件)
[…] VPSなどで、WordPressのパーマリンクの設定がうまくいかない時 https://nskw-style.com/2012/server/apache/htaccess-mod-rewrite-allow-override-all.html This entry was posted in 未分類 by admin. Bookmark the permalink. […]
[…] VPSなどで、WordPressのパーマリンクの設定がうまくいかない時 – Shinichi Nishi… […]