超わかる【IT】「グーテンベルクで保存できない」を解決した方法!

IT・テクノロジー・新製品

グーテンベルクとはwordpressで提供されるブロック型のエディタです。
従来のクラッシックエディタのサポートが2021年年末までなのでグーテンベルクに移行する方も増えてきていると思います。

わたしもそんな中の一人でしたが、今回その切替でめちゃくちゃはまってしまい、約3週間ブログ更新を止めてしまいました。
そこで、ど素人のわたしが悪戦苦闘しながら解決?した方法を公開いたします。
わたしの経験がみなさんのお役に立てばうれしい限りです。

症状と環境、試したこと

症状

グーテンベルク(またはBlock Editor)で「下書き保存」をクリックすると保存されない
タイトルと本文を入力したのち
・「下書き保存」をクリックすると「保存しました」と表示される
・その後、入力したタイトルが消え「タイトル追加」という薄いグレー文字に変わる
・本文は見えている(消えていない)
・保存はされていない
・プレビューするとタイトルが「自動下書き」になっている
・プレビューでは本文は見えない
・エディタに戻るとタイトルが「自動下書き」になっている
・エディタに戻ると本文は残っている
・スマホのwordpressのアプリからは問題なくブロックエディタで保存できる

この症状は
・グーテンベルクまたはプラグイン「ClassicEditor」の「BlockEditor」で発生します
・この時、エラーなどは一切出ません
・「ClassicEditor」の「ClassicEditorモード」では保存されます

環境

・Windows10 64bit
・wordpress5.6
・PHP:7.4
・ブラウザ:chrome
・サーバーのWAF:OFF

試したこと

・プラグイン全停止
・キャッシュのクリア
・ブラウザのキャッシュクリア
・ブラウザの変更(Edge、Firefox)
・テーマ変更(twentyONE)
・WPのグレードダウン(5.5、5.4、5.3)
・テーマのグレードダウン(マイナーVerのダウングレード)
・サーバーの海外アタックOFF
・プラグイン Disable WP APIを使用
・JETPACKの通知を無効にする(表示=「有効にする」で無効状態)
・PHPのエラーを確認(エラーは無し)
・wordpress.orgでサポートを依頼→なんとなくサーバー側ではないか?との見解
・レンタルサーバー会社に調査を依頼(サーバー側に原因があるかどうかわからないため無理との回答)

これだけやってもダメ、そもそもエラーが出ないというところで情報なさすぎ…
海外のサイトをぐぐっても似たような症状の方はいるけど解決していないかすでに試した方法でした。
デバッグしようにも方法がわからない
なんとなくサーバー側らしいということしかわからなかった…
あとできることは途方に暮れることしかなかった…

解決方法

解決のヒント

解決のヒントになったのはこのサイトです

こちらをみると原因は.thaccessにあるらしい
しかし、ど素人のわたしに.htaccessは敷居が高い(><
これまでも触ったことはあったけど、セキュリティ向上のためHTTPSへのリダイレクト処理とFeedWordpressガードぐらい…

しかし、がけっぷちのわたし^^;やるしかない‼
そうこころに決めて.htaccessで自分が追加したと思われる部分をがっつり削除…
そして、参考サイト通りパーマリンクをなにかほかのものに変えて実験…

大成功‼ ついに、ついに解決‼

原因

かつて.htaccessに自分が追加した部分をごっそり削除しました。
そして、保存を実行。
すると、「更新に失敗しました。 返答が正しい JSON レスポンスではありません。」
と表示されました。大きな前進です。

参考サイトにあったように今度はパーマリンクを疑います。
「投稿名」になっていたのを「基本」にしてみます。
そして、保存…

やったー‼
ついに保存できました^^
そして、削除した部分から実際にどこが原因なのか探っていきます。

原因は.htaccessのリダイレクト処理にありました。
下記部分をコメントアウトしてみました。

#ここのコメントを外すと保存できなくなる
### xxx/index.xxx(xxx) to /
#RewriteCond %{THE_REQUEST} ^.*/index.[A-Za-z]+ [NC]
#RewriteRule ^(.*)index.[A-Za-z]+ https://(サイト名)/$1 [R=301,L]
#
#
#ここのコメントを外すと保存できなくなる
### no/ to /
#RewriteCond %{REQUEST_URI} !/$
#RewriteCond %{REQUEST_URI} !\.[^/\.]+$
#RewriteRule ^(.*)$ $1/ [R=301,L]

これで無事保存できました。
他のサーバーできちんとリダイレクトできるので、原因というより正確には障害要因ですね。

で、リダイレクト処理はどうするのか?という問題ですが、/なしについてはなくてもきちんとリダイレクトするので問題なしです。
indexについては今どきこういう記述をする人はいないので問題なし。ということにしました。
もっとも、保存とこの2つのリダイレクトを天秤にかければ当然、保存優先ですからね^^

コメント

タイトルとURLをコピーしました