WordPress全般

WordPressサイトを移行したらトップページ以外が404 Page not foundになってしまった場合の対処法

Pocket

2015-01-09 15_46_49-worpress page not found wordpress - Google Search

どんなシステムであれ、ホスティングサイトを変更するといろんな不具合がでます。

それはWordPressも然り。経験上多いのは下記です。

  1. ファイル・フォルダのパーミッションが足りない
  2. MySQLのテーブルoption_valuesのsite_url,homeが古いドメイン名になっている
  3. 必要なモジュールが入っていない

大きいところではこんなところでしょうか。

昨今人気のAmazonEC2 や Microsoft AzureではOSだけがインストールされていて、その他のソフトウェアは自前で用意ということが多いので、結構これらのどれかが抜けることが多いと思います。

今回、 必要なモジュールが入っていない ことでちょっとだけ苦戦してしまったので記載しておきます。

トップページ以外表示されない!

今回はとあるホスティングサイトからMicrosoftのAzure環境へWordPress4.0を移行しました。

順調に移行作業が進み、トップページが表示された。今回も余裕だな なんて思っていたらその他のページが表示されない。

調べてみると、どうやらパーマリンク設定が効いていない様子。

WordPressでは標準で5つのタイプからパーマリンク、つまりURLの見せ方を変えることができます。これを”デフォルト”以外にすると、トップ以外が404 not page foundのエラーがでます。

パーマリンクでデフォルト以外を選択すると、mod_rewriteというモジュールを使って、URLをリライトします。(例:xxxx/p-12 -> /xxx/aboutus)

やること

mod_rewriteがあるか確認

WebサーバーはApacheを使っているので、confファイルをチェック。

/etc/httpd/conf/httpd.conf

下記の一行がコメントアウトされていたら、はずす。なかったら追加します。

LoadModule rewrite_module modules/mod_rewrite.so

.htaccessが書き込み可能か確認

Document rootの直下に.htaccessというファイルがあります。パーマリンク設定を変えると、このファイルが自動で変更されるのですが、ファイルパーミッションが十分でない場合は書き込みができずに、パーマリンクが反映されません。

これは下記のコマンドでパーミッションを変えましょう。

chmod 666 .htaccess

厳密にはこのパーミッションを変えなくても、ファイルをマニュアルでエディットすればよいのですが、面倒なので、上記の設定をしておいたほうがよいと思います。

《追記:2015/1/29》

httpd.confで上書き可能になっているか

Apacheの設定ファイルを開きます。
/etc/httpd/conf/httpd.conf

/var/www/html以下のファイルに対して上書きが可能になっているか確認します。
下記の赤文字の箇所がNONEになっていたらALLに変更します。

<Directory "/var/www/html">
AllowOverride All
</Directory>

変更後httpdをリスタートします。

これで完了です。

すべてのページが正常にアクセスできるようになったかと思います。

Ads by Google

Ads by Google

-WordPress全般
-,

© 2021 みる米技術部 Powered by AFFINGER5