先日改修のためにMAMPを7.1にアップデートしてWordpressの環境を構築したらで下層のページが全て404になる現象に遭遇しました。
今回はその時の解決法についての備忘録です。
試したこと
まずどこで原因が発生をしているのか突き止めるために考えられる原因を洗い出しました。
- 改修のために持ってきたテーマファイルに問題がある
- wordpressを入れるディレクトリを下に落としていたので.htaccessの記述が間違っている
- データベースの読み込みに問題があってWordpressのリダイレクトに問題が生じている
- ローカルにデータベースの環境を複製するときになんらかの問題が生じた
- PHPのバージョンが違ったりWordpressのバージョンが違ってプラグインがローカル環境で壊れた
- アップデートでMAMPが壊れた
原因として考えられるのはこの辺りでした。
この段階で一番原因の可能性が高いと思っていたのは.htaccessでした。
初めに取り掛かったのは1.に原因がないかの確認です。
これは簡単でテーマの切り替えて同じく404になるかを確認すればいいです。
同じく404になればテーマの原因の可能性が減ります。
次に試したのがhtaccessの記述の見直しです。
これは色々試したもののうまくいきませんでした。
なぜか永遠にテーマないの404.phpを表示せずに404が表示されます。。
htaccessの問題の可能性は捨て切れませんでしたが一旦他の原因を探ります。
ここでWordpress側の問題の可能性を考え新しくWordpress環境を構築しました。
しかし404が変わらず出ます。
この時おかしいと思ったのことが
- デフォルトのカスタム投稿がなぜか/wordpress/index.php/%year%/%mouthnum%/%day%/になっている
- /wordpress/index.php?p=123は表示される
という点でした。
なぜかパーマリンクの設定にindex.phpがいることからMAMPの問題かhtaccessの記述の可能性が高いように思えました。
そこで再度htaccessを試したもののうまくいかず、MAMPの問題に絞って調べました。
解決法
結論としては
https://qiita.com/denbnddb/items/46fc6a8477abf7b405fc
を読んで./MAMP/conf/apache/httpd.conf の
LoadModule rewrite_module modules/mod_rewrite.so
のコメントアウトを外してMAMPを再起動したら404が出なくなりました。
どうやらこのmodules/mod_rewrite.soというモジュールを読み込んでいないとRewriteRuleが動かないそうです。
設定が勝手に変わっていたり勘弁して欲しい。。