MAMPを7.2にバージョンアップしたら下層ページにアクセスできなくなった
MAMP mod_rewrite 設定備忘録
事象
トップページやワードプレスの管理画面へのアクセスは問題ないのだが、下層ページのアクセスが404 Not Foundになってしまう。
原因
WordPressでは、mod_rewrite
モジュールが利用できないと、下層ページ等で404 Not Found エラーとなってしまう。バージョンアップをしたのが原因でバージョン7以上はデフォルトの設定でmod_rewrite
がコメントアウトされて使えない状態になっている。
WordPressにおけるmod_rewriteの重要性
mod_rewriteが無効の場合の影響
基本パーマリンク以外では404エラーになります:
https://example.com/sample-post/
(投稿ページ)
https://example.com/category/news/
(カテゴリページ)
https://example.com/about/
(固定ページ)
https://example.com/2024/01/
(日付アーカイブ)
https://example.com/?p=123
(基本パーマリンクのみ動作)
なぜこうなるのか?
WordPressのURL処理の仕組み:
美しいURL(カスタムパーマリンク)→ WordPressの内部パラメータに変換
例:/sample-post/
→ /?p=123
mod_rewriteの役割:
mod_rewriteが無効だと:
- この変換処理が実行されない
- Webサーバーは実際のファイル
/sample-post/
を探そうとする - そんなファイルは存在しないので404エラー
基本パーマリンクが動作する理由
基本パーマリンク(/?p=123
)は:
- すでにWordPressの内部パラメータ形式
- mod_rewriteによる変換が不要
- 直接WordPressのindex.phpで処理される
💡 つまり、WordPressで任意のカスタムURLを使うには、mod_rewriteは必須ということですね!
これがWordPressの管理画面でパーマリンク設定を変更すると、自動的に.htaccessファイルにRewriteルールが書き込まれる理由でもあります。
解決策
MAMPのApache設定ファイル(/Applications/MAMP/conf/apache/httpd.conf
)で以下を確認
1. 下記の部分を探す
2. #を消してコメントアウトを外す
✅ この設定の後にMAMPを再起動すると正常にアクセスされるようになりました。
MAMP mod_rewrite 設定備忘録