ワイヤード・パンチ

元・大阪人が、岡山の山奥でも生きていけることを証明するためのブログ。

vagrant上のwordpressが、トップページ以外404になってしまうときの対処法。

image

何が原因でこうなってしまったのかわからないのですが、突然vagrantを使用した仮想環境に設置したwordpressサイトの、トップページ以外すべて404エラーになってしまいました。テーマに404.phpがあるにも関わらず、この真っ白な画面です。これの対処について。

広告

.htaccessが効いていない。

サイトURLは「http://(ルート)」、wordpress本体の場所は「http://(ルート)/wordpress」というように、wordpress本体をルートより後に設置している場合、ルートには.htaccessが自動的に出力されています。その.htaccessのおかげで、本体は別の場所に置きつつ、アクセスはルートのままで良いというのが実現できているのだと思われます。

しかし、何らかの理由でその.htaccessが効かなくなり、トップページ以外がエラーになっているようです。再度有効にするためには、仮想サーバ内に存在するhttpd.confというファイルを編集しなければいけません。仮想OSをCentOS7にしている場合、パスは「/etc/httpd/conf/httpd.conf」になるのですが、ブラウザやエクスプローラでそのパスを入力してもアクセスできるわけではありません。

仮想サーバへFTP接続して編集する。

image

今回はWinSCPを使って「httpd.conf」の元までたどり着くことにします。仮想サーバに対してFTP接続することはできるのです。

下記はログイン情報です。vagrantfileを編集していない場合は、このままでいけるはず。

  • 転送プロトコル: SFTP
  • ホスト名: 192.168.33.10 (当環境の場合は192.168.33.12)
  • ポート番号: 22
  • ユーザ名: root (vagrantでも接続可能だけど、その場合は書き込み権限がない。)
  • パスワード: vagrant

image

FTP接続できましたら、「/etc/httpd/conf」まで階層を進め、「httpd.conf」をローカルへダウンロードします。

image

ローカルへダウンロードした「httpd.conf」ですが、テキスト形式のファイルなので、お好みのテキストエディタ(UTF-8が使用可能なもの。)で開きます。今回は「Notepad++」にしておきます。

image

「httpd.conf」を開くと、「AllowOverride None」と書かれた箇所が複数存在しているので、それをすべて「AllowOverride All」に置き換えて保存します。

image

保存できたら再度WinSCPに戻り、元の場所へ上書きアップロードします。

image

あとはcmdからvagrant rebootして、仮想環境を再起動すれば完了。トップページ以外が404ではなくなるはずです。

下記のサイトが参考になりました。

mod_rewriteがうまく動かない時のチェックポイント

余談。

tera termなどを使って、真っ黒のコンソールから仮想サーバにアクセスして、「httpd.conf」を編集する方法もあります。しかし、コンソール上だとテキストファイルを編集するときに「vi」という特殊な入力方式になるうえに、これがかなりの曲者なので、windowsユーザが慣れ親しんでいるであろうGUI中心の手段にしておきました。