現行システムをCentOS5.3からCentOS6.4に変更することにした。
CentOS6.4のサーバを構築し、そこにWordPressの引越しをした。
やっとトップページも管理画面もまともに表示されたと思ったら、今度はエントリのタイトルやカテゴリーをクリックして表示させようとすると404 Not Foundエラーが発生した。
表示されたパーマリンクが文字化けしているようなので文字コード関連のエラーかと思ったらそうではないらしい。



パーマリンクの404 Not Foundエラー

トップページのエントリー一覧は普通に表示される。

図1:トップページ

図1:トップページ

各記事のエントリータイトルのパーマリンクをクリックすると、以下のように404 Not Foundエラーが表示される。
しかも、URLが文字化けしているようだ。
カテゴリーをクリックしても同じようにエラーが表示される。

図2:404 Not Foundエラー

図2:404 Not Foundエラー

パーマリンクの設定

パーマリンクの設定は以下のようにカスタム構造で/%category%/%postname%/としている。
カテゴリーとエントリーのタイトルがURLに設定されている。

図3:パーマリンク設定

図3:パーマリンク設定

mod_rewriteがないのか?

パーマリンクをクリックして404 Not Foundエラーが出るということは、リンク切れを起こしているということだ。
WordPressのパーマリンクは、Apacheのmod_rewriteモジュールのRewrite機能を利用している。
つまり、Apacheのmod_rewriteモジュールが組み込まれていない場合、パーマリンクは有効とはならない。
そこで以下のように確認してみた。

# 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

httpd.confにも設定はあるし、mod_rewrite.soもきちんとインストールされている。

パーマリンクのRewrite設定は正常か?

WordPressでは、インストールディレクトリ直下に.htaccessを置き、この中でパーマリンクのRewrite設定を記述している。
元のサーバからごっそりコピーしてきたので、ないわけはないのだが念のために確認してみる。

# cat /var/www/html/wordpress/.htaccess

 

# BEGIN WordPress

RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

# END WordPress

こちらも引越し前と同じ状態になっている。

原因と対策

実はhttpd.confの設定に不備があった。
<Directory “/var/www/html”> ~ </Directory>の中でAllowOverrideがNoneのままだった。
このため、.htaccessの設定が無効になっていたのだ。
そこで以下のように変更したら正常に表示されるようになった。

AllowOverride None
 ↓
AllowOverride All


Categories: WordPress


13 Responses to “WordPressの引越しでパーマリンクの404 Not Foundエラーが発生”

  1. 武田 より:

    初めまして。
    こちらに書かれている症状とまったく同じ症状が出ていたので、参考にさせていただきました。
    全て同じようにチェックし、httpd.confまで設定を変えたところ、URLバーに表示されるURLの文字化けは解消されました。
    The requested URL ○○/○○/was not found on this server  に表示されるURLは文字化けしたままでした。
    他に何か対策はできないでしょうか。

    もし良ければご教授下さい。お願いします。

  2. 武田 より:

    パーマリンクをデフォルトにしたら表示できたので、その後vhost.confをチェックしたらwebminから追加したサブドメインの設定はできていませんでした。

    お騒がせしました

    参考にしたブログ
    http://stereocube.net/archives/605

  3. Junrei より:

    武田さん
    問題解消されたとのこと。
    よかったですね。
    有意義な情報も残していただき感謝します。

  4. Junrei より:

    武田さん
    パーマリンクをデフォルトにしたら表示されたって言うことは、結局もともとの現象は解決していないって言うことでしょうか。
    ブラウザのキャッシュが残っていて、キャッシュの
    The requested URL ○○/○○/was not found on this server 
    ページが表示されているのでは?
    ブラウザのキャッシュをクリアして再表示させてみたらいかがでしょうか?
    それでもダメならApacheのエラーログを確認してみたら何か情報がつかめるかもしれませんね。

  5. […] この記事を参考に対応。 […]

  6. […] 【参考】 Jラボ:WordPressの引越しでパーマリンクの404 Not Foundエラーが発生 […]

  7. […] い、こちらのページ[WordPressの引越しでパーマリンクの404 Not Foundエラーが発生]を参考に検証してみました。 […]

  8. […] MySQLの引越しで文字化けが発生 » WordPressの引越しでパーマリンクの404 Not Foundエラーが発生 がヒットし […]

  9. […] MySQLの引越しで文字化けが発生 » WordPressの引越しでパーマリンクの404 Not Foundエラーが発生 がヒットし […]

  10. […] WordPressの引越しでパーマリンクの404 Not Foundエラーが発生 – 原因と対策 […]

  11. 匿名 より:

    参考になりました。ありがとうございました。

  12. […] WordPressの引越しでパーマリンクの404 Not Foundエラーが発生 […]

Leave a Reply