「返答が正しいJSONレスポンスではありません」のエラー。
結局私の場合は、サブディレクトリのSSLが有効になっていなかったことが原因でした。
ググっていろんなブログを徘徊したのですが、要因が複数あって原因不明な感じだったので、私の場合の解決方法をメモしておきます。
状況
- サーバー、ドメインともにお名前.com
- とある企業様サイトを、別ドメインに移し替える作業を実施していた。
- エラーが起きたのはサブディレクトリに設置されたメディア
- 記事を更新しようとすると、「返答が正しいJSONレスポンスではありません」のエラーが発生。
- ワードプレスのトップページ(サブディレのTOP)は正常に表示される
- しかし、個別記事などの下位ページにアクセスすると、404エラーが返ってくる。
- ネイキッドドメインは、TOPページも個別ページも正常に表示される。
実施したこと
- 移転後のサブディレクトリの.htaccessを、移転前と同じ記述に変更
- サブディレクトリのSSLを有効化
普段はXサーバーがメインなので、1.の作業も2.の作業も発生しないのですが、お名前.comのサーバーはいちいち設定が必要です。
.htaccessを、移転前と同じ記述に変更
サイトの移転には、プラグイン「All in one WP migration」を使用しました。
サイト移転後のサブディレクトリの.htaccessを確認したところ
# BEGIN LiteSpeed
# "BEGIN LiteSpeed" から "END LiteSpeed" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule Litespeed>
SetEnv noabort 1
</IfModule>
# END LiteSpeed
なぜかこれしか書かれていなかったので、ワードプレスの設定部分を追記。
(# BEGIN WordPress〜# END WordPressまで)
サブディレクトリのSSLを有効化
サーバー管理画面の「基本設定」 → 「WordPress 一覧」 から、
サブディレクトリのSSL有効化の「有効にする」をクリック。
1.だけ実施してもエラーは解消しなかったのですが、
2.を実施したらすぐに直った(個別記事の更新と表示ができるようになった)ので、たぶんSSL化が原因だったのではないかと思います。
TOPドメインのSSL有効にしたら、サブディレクトリも自動的にSSL化してくれればいいのに・・・
お名前.com 嫌いです!
追記
別件で同じエラーに遭遇した際も、.htaccessがエラーの原因でした。
ワードプレスのディレクトリ変更を行なったのですが、フォルダごとワードプレスファイルを移行した際に、.htaccessのフォルダパスがそのままになっていたため、「返答が正しいJSONレスポンスではありません」が発生しました。
このエラーに遭遇した際は、まず.htaccessを開いてみて、修正すべき箇所がないか探してみた方が良いかもしれません。