VPSなどで、WordPressのパーマリンクの設定がうまくいかない時

WordPressのパーマリンク設定を変更した際に、変更したパーマリンクでアクセスしてうまくいかない場合のチェック項目を調べました。

.htaccessがあるか。書き換えられているか

ドキュメントルートに.htaccessファイルがあるかどうかを確認します。
また、下記のようになっているかも確認します。

# BEGIN WordPress<br />
&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
RewriteBase /<br />
RewriteRule ^index\.php$ - [L]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
&lt;/IfModule&gt;<br />
# END WordPress<br />

これは、ドキュメントルート以下にもしそのファイルやフォルダが実際に置いてあればそれを表示し、もしなければリライトルールを適用してルートの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ファイルでリライトを設定する方法が書かれているので、そちらを参考にするのも良いと思います。

WordPress 高速化&スマート運用必携ガイド WordPress 高速化&スマート運用必携ガイド
レビューを見る
欲しいものリストに追加
価格:3024円 在庫あり。powered by Amazon.co.jp

間違いなどがあったら教えて下さいm(__)m。

↓ プラグインを作る方々への本、書きました。 ↓

「VPSなどで、WordPressのパーマリンクの設定がうまくいかない時」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です