エックスサーバーを利用しているWordPressサイトで、記事を公開したり更新しようとしたりするとき、以下のようなエラーメッセージがでて表示できなくなる場合があります。
501 Not Implemented アクセスしようとしたページは表示できませんでした。 このエラーは、実装されていないメソッドでのアクセスがあったことを意味します。 以下のような原因が考えられます。 対応していないメソッド(MOVE/COPYなど)を使用した。
「501 Not Implemented」なので、HTTPリクエストのメソッドが実装されていないというサーバーエラーということは分かりますが、この程度の機能は普通のレンタルサーバーなら実装されています。
しかし、エックスサーバーを利用されている場合、サーバーパネルで「WAF設定」内にある「コマンド対策」を有効にしていると、特定の文字列が入った記事を更新しようとしたときにセキュリティ機能が働いてしまいこのエラーを出してしまいます。
エックスサーバーを利用しているとまれに遭遇するエラーですので、今回はこの対処法をご紹介します。
「WAF設定」の設定が原因
普通のレンタルサーバーを利用していれば「501 Not Implemented」というエラーはそうそう出しません。
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/501
しかしエックスサーバーを利用している場合、セキュリティ機能のひとつとして存在する「WAF(Web Application Firewall)」がこのエラーを誘発してしまう場合があります。

「Web Application Firewall(ウェブアプリケーションファイアウォール)」とは、ウェブサイト内に存在する様々なアプリケーションに対して、脆弱性を突いた攻撃などを防いでくれるセキュリティ機能のひとつです。
個別のアプリケーションそれぞれに実装されるものではなく、アプリケーションの前面となるネットワークに設置して攻撃を検知、低減する機能です。いわゆる「予防的」なものですが、近年の高度化した攻撃に対して有効に働いてくれますので、多くのレンタルサーバーで実装されています。
https://www.jbsvc.co.jp/useful/security/what-is-waf.html
通常は有効にしておくべきWAF設定ですが、少し過剰に反応してしまうことがあり、特にエックスサーバーのWAF設定である「コマンド対策」が有効になっていると、攻撃に使われるようなコマンド用文字列が記事内(画像パスなど含む)に存在しているとリクエストを拒否してしまい、「501 Not Implemented」エラーを出してしまうことがあります。
本人にその気がなくても、自然と文字列が入ってしまうことがあり(例えば実際にコマンド操作を解説している記事など)、その場合に記事の作成や更新ができなくなってしまうことがあります。
原因となる文字列が分かればなるべく取り除く
WAF機能が働いてしまう問題となる文字列が分かれば、それを取り除いた上で記事を公開(プレビュー、更新)することで対処できます。
具体的には「kill」「ftp」「mail」「ping」「ls」などとエックスサーバー公式サイトでは紹介されていますが、もっとあると思います。
ただ、このブログのように問題となる文字列が記事内容として必須の場合もあります。その場合は後述の方法を使います。
「WAF設定」の「コマンド対策」を一時オフにする
原因はエックスサーバーの「WAF設定」内にある「コマンド対策」という機能によるものですので、一時的にこれをオフにすることで対処します。
https://www.xserver.ne.jp/manual/man_server_waf.php
「コマンド対策」はオフのままでよいかどうか
セキュリティを万全にしたいのであれば、もちろん「WAF設定」のすべての項目を「ON」にすることが推奨されます。
無事、記事が更新できるようになったのならば、「コマンド対策」の設定を「ON」に戻すのが理想です。
ただ、私のブログは結構この「コマンド対策」に引っかかるので頻繁にエラーを出します。その度に1時間も時間が取られるのはかなり不便なので、セキュリティがやや落ちることを承知で私は「コマンド対策」のみ「OFF」にしています。
代わりに他のセキュリティ対策プラグインを導入したり、「.htaccess」に色々記述したりして別途対策をしています。
まとめ
以上、「エックスサーバーを利用している」「WordPressサイト」という条件で「501 Not Implemented」エラーがでてしまう場合の対処法をご紹介いたしました。
無縁な人は本当に無縁のままなのですが、このブログのようにコマンド用の文字が記事内に入りやすい内容を書いていると、割と頻繁に引っかかります。
たまにであれば一時的に「コマンド対策」の設定を「OFF」にして、用が済んだら元に戻すのが良いのですが、結構な頻度でエラーを出すので私は「OFF」のまま運用しています。
この辺りはセキュリティリスクとサイト運用の両面を吟味して設定されてみてください。
参考サイト
https://tohaz.com/solve-501error-wordpress/
https://nokonokonetwork.com/blog/to_solve_501_error.html
コメント
コメント欄を開く