パーマリンクで404NotFoundが発生する場合


  1. スラッグ名が、固定ページ・投稿・カテゴリで被っていませんか?
  2. htaccessの権限は777ですか?
  3. サーバはrewriteRuleに対応していますか?
  4. httpd.confのAllowOverrideの設定が、もしかしてNoneですか?
  5. URLが変わった場合には(wp/とかを消す場合)、ひとつ上の階層にもhtaccessを配置してありますか?そしてその内容のPATHは正しいですか?(ちなみに、WordPress内のファイルには、wp/をつける。上の階層にはつけない。)

 

2はついでに中身も確認。

 

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

 

3については以下のコマンドで確認。

# grep mod_rewrite /etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
# find / -name mod_rewrite.so -print
/usr/lib64/httpd/modules/mod_rewrite.so

 

4はhttpd.confの中身を確認。

vi /etc/httpd/conf/httpd.conf

 ~ の中でAllowOverrideがNoneのままだった。
このため、.htaccessの設定が無効になっていたのだ。
そこで以下のように変更したら正常に表示されるようになった。
 

AllowOverride None

 ↓

AllowOverride All

apacheを再起動する

/etc/init.d/httpd restart