WordPressを復旧したのに、
なぜかプラグインのアップロードで「501エラー」。
・サイトは表示される
・管理画面にも入れる
・でも、なぜか操作だけ失敗する
こんな状態にハマったことはありませんか?
実際に復旧作業中に、この問題に遭遇しました。
結論から言うと、原因は意外なところにありました。
状況
今回の状況は以下の通りです。
・バックアップからWordPressを復旧
・サイト表示は正常
・管理画面もログイン可能
しかし、
プラグインをアップロードしようとすると…
「501 Not Implemented」エラーが発生
対応
原因は「WAF(Web Application Firewall)」か?!
XserverのWAF設定がONの状態だと、
プラグインのアップロードや一部のPOST通信がブロックされることがあります。
特にWordPress復旧直後は、
・ファイル構成の違い
・通信内容の変化
により、WAFが誤検知しやすい状態になります。
以下の手順で解決しました。
① Xserverのサーバーパネルにログイン
② 「WAF設定」を開く
③ 該当ドメインのWAFを一時的にOFF
④ 再度プラグインをアップロード
→ 正常にアップロード完了
まだ、501エラーがつづいている場合もあります。
WordPress復旧後に501エラーが出る原因は1つではありません。
今回のケースでは、
一見WAFによるブロックに見えましたが、
実際の原因は
「WordPressコアファイルの不足」でした。
一応、元のWPのVerを確かめて欲しいですが、こちらからコアファイルをダウンロードします。
コアファイルはこちら。1つづつ上書きでアップロードしていきます。削除してからアップロードだと白画面になる可能性があります。1つアップしたら、リロードして画面がもどればOK。余計なアップロードはしない方がいいです。
wordpress/
├ wp-admin ← コア(超重要)
├ wp-content ← ❌ここはコアじゃない(触らない)
├ wp-includes ← コア(超重要)
├ index.php ← コア
├ wp-login.php ← コア
├ wp-config-sample.php ← コア(参考用)
├ wp-settings.php ← コア
├ wp-load.php ← コア
├ xmlrpc.php ← コア
├ license.txt ← コア
├ readme.html ← コア
最低限これ
wp-admin
wp-includes
ルート直下のphp全部
結果
今回の事例では、「wp-admin」を1つアップロードして直りました。
直りましたら、さきほどのWAFの設定をONに戻すことを忘れずに。
結論から言うと、
今回の501エラーの原因は「プラグイン」ではありませんでした。
WAFはプラグインをブロックしていたのではなく、
異常なリクエストを検知してブロックしていました。
その異常の原因は、
WordPressコアファイルの不足でした。
「プラグインでもWAFでもありません。原因は、もっと基本的な部分でした。」