導入
WordPressを All-in-One Migration でローカルに移行した際、よくあるトラブルがあります。
- TOPページは表示されるのに下層ページは404
- 投稿の保存ボタンを押すと「更新に失敗しました。返答が正しいJSONレスポンスではありません」と表示される
最初は「パーマリンクの問題かな?」と思いがちですが、実際の原因は Apacheのmod_rewriteが無効になっていること です。
この記事では、症状の原因と具体的な解決手順を解説します。
症状の整理
- TOPページは表示される
- 下層ページ(投稿や固定ページ)は404
- 投稿保存ボタンが効かない
- ブラウザで
/wp-json/にアクセスすると404
この時点で、単なるパーマリンクの問題ではなく REST API が動作していない ことが分かります。
原因
WordPressは以下の機能を mod_rewrite に依存しています。
- パーマリンク
- REST API (
/wp-json/) - Gutenberg(ブロックエディタ)の投稿保存
MAMPで移行した場合、デフォルトの httpd.conf では mod_rewrite がコメントアウトされていることがあります。
#LoadModule rewrite_module modules/mod_rewrite.so
この状態だと:
.htaccessが無視される- REST API が404
- 投稿保存ボタンがJSONレスポンスエラー
- 下層ページが表示されない
解決手順
mod_rewrite を有効にする
- MAMP → Preferences → Apache → httpd.conf を開く
- 以下の行のコメントを外す
- Apache を再起動
#LoadModule rewrite_module modules/mod_rewrite.so
↓
LoadModule rewrite_module modules/mod_rewrite.so
.htaccess を確認
WordPress本体のあるディレクトリ(例:/Applications/MAMP/htdocs/my-site/wp)の .htaccess を確認します。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /my-site/wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /my-site/wp/index.php [L]
</IfModule>
# END WordPress
RewriteBaseと最後のRewriteRuleが正しいサブディレクトリになっているか確認- MAMPのURLに合わせて修正してください
WordPressのURLを確認
管理画面 → 設定 → 一般
- WordPress アドレス (URL):
http://localhost:8888/my-site/wp - サイトアドレス (URL):
http://localhost:8888/my-site/wp
管理画面に入れない場合は phpMyAdmin で wp_options の siteurl と home を更新
UPDATE wp_options
SET option_value='http://localhost:8888/my-aite/wp'
WHERE option_name IN ('siteurl','home');
パーマリンクを再保存
管理画面 → 設定 → パーマリンク → 「変更を保存」
これで下層ページやREST APIが正しく動作します。
投稿の保存を確認
- 投稿の保存ボタンを押す
- JSONレスポンスエラーが出なくなり、投稿が保存できることを確認
注意点・補足
- MAMP + All-in-One Migrationでのローカル移行では mod_rewrite無効が最も多い原因
- .htaccess や siteurl は正しくても、mod_rewrite が無効だとREST APIは404になります
- この手順を踏めば、投稿保存も下層ページも正常に表示されます
まとめ
- WordPressのローカル移行で下層ページが表示されない・投稿保存できない場合は mod_rewriteの有効化 が第一手
- Apacheの設定、.htaccess、URL設定、パーマリンク再保存の順で確認すると一発で直せます
- MAMP環境での移行後は、この手順を必ず確認すると安全です
この記事が役に立ったら
コーヒー1杯分の応援をいただけると励みになります!
Stripe
で安全に決済