wordpressのエラー「返答が正しいJSONレスポンスではありません」対処方法
wordpressでブログを始める際に、記事や固定ページをブロックモードで作成し保存したところ、「返答が正しいJSONレスポンスではありません」エラーが発生しハマったので、解消方法を記録しておこうと思う。
エラーメッセージ
パーマリンク変更した後からエラーが発生
様々試した結果、パーマリンク設定で基本以外は、エラーが発生した。.htaccessの記述かApacheのmod_rewriteが有効になっていないことが原因っぽそうである。
パーマリンク設定で基本を選択した場合の.htaccess
パーマリンク設定で基本(図①)を選択した場合、以下の記述が出力される。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいま
す。
# END WordPress
パーマリンク設定で基本以外を選択した場合の.htaccess
パーマリンク設定で基本以外(図②)を選択した場合、以下の記述が出力される。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいま
す。
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
以下のコマンドで、rewrite_moduleがApacheに組み込まれていることを確認。
httpd -M | grep "rewrite_module"
原因と対策
原因は、Apacheにmod_rewriteモジュールは問題なく組み込まれていたが、ConfでAllowOverRide Allが設定されていなかったことにより、指定のディレクトリ配下で.htaccessによるhttp.conf設定の上書きを許可されていなかったことにより発生していた。
※.htaccessが無効化されていた。
最近では、Apahceの設定でデフォルトオフになっているケースがあるみたいなので、新規でApahceからインストールする場合は確認したほうが良さそうである。
下記のDirectory部を追加することで、エラーが解消した。
.htaccesファイルを不用意に編集してエラーが発生。
「WP Htaccess Edit」プラグインで.htaccesファイルを不用意に修正したときに発生。下記の間の設定は修正しないほうが良い。不用意に修正してしまった場合は、再度、関連プラグインなどを削除してインストールしてみたり、設定→パーマリンクで再設定してみると復活する。
# BEGIN WordPress
# END WordPress