どんなシステムであれ、ホスティングサイトを変更するといろんな不具合がでます。
それはWordPressも然り。経験上多いのは下記です。
- ファイル・フォルダのパーミッションが足りない
- MySQLのテーブルoption_valuesのsite_url,homeが古いドメイン名になっている
- 必要なモジュールが入っていない
大きいところではこんなところでしょうか。
昨今人気の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
下記の一行がコメントアウトされていたら、はずす。なかったら追加します。
.htaccessが書き込み可能か確認
Document rootの直下に.htaccessというファイルがあります。パーマリンク設定を変えると、このファイルが自動で変更されるのですが、ファイルパーミッションが十分でない場合は書き込みができずに、パーマリンクが反映されません。
これは下記のコマンドでパーミッションを変えましょう。
厳密にはこのパーミッションを変えなくても、ファイルをマニュアルでエディットすればよいのですが、面倒なので、上記の設定をしておいたほうがよいと思います。
《追記:2015/1/29》
httpd.confで上書き可能になっているか
Apacheの設定ファイルを開きます。
/etc/httpd/conf/httpd.conf
/var/www/html以下のファイルに対して上書きが可能になっているか確認します。
下記の赤文字の箇所がNONEになっていたらALLに変更します。
AllowOverride All
</Directory>
変更後httpdをリスタートします。
これで完了です。
すべてのページが正常にアクセスできるようになったかと思います。