MAMPでWordPressをローカルに移行したときの「投稿保存できない・下層ページが表示されない」問題を解決する方法

MAMPでWordPressをローカルに移行したときの「投稿保存できない・下層ページが表示されない」問題を解決する方法

導入

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 を有効にする

  1. MAMP → Preferences → Apache → httpd.conf を開く
  2. 以下の行のコメントを外す
  3. 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_optionssiteurlhome を更新

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 で安全に決済
プロフィール画像

Yukiya

札幌在住Webエンジニア。Next.js / React / TypeScript / PHP。 技術・ガジェット・キャンプ・コーヒーなど、エンジニアの生活を良くする話題を発信しています。

コメントを残す

メールアドレスは公開されません。必須項目には * が付いています。

CAPTCHA