エックスサーバー 501エラー

WordPress サーバー 設定

エックスサーバーの WP で「501エラー」が表示される時の対応策

2021年11月5日

エックスサーバーはワードプレス(WordPress)を効率よく動かしてくれるサーバーですが、ページを更新しようとすると「501エラー」が表示されて先に進めなくなるときがあります(結果的にページ更新に失敗してしまう)。
さて、どうしよう」というのが今回のテーマです。

本ページはこんな方におすすめ

  • エックスサーバーで WordPress を利用している人
  • WordPress を更新または新規投稿しようとしたら 501 エラーになってしまう人

501 Not Implemented

501エラーの根本的意味は?

画面表示にもありますが、認識されない「メソッド」を使用したため、エラーとして処理したということです。
メソッドというのは、正確には HTTP リクエストメソッドのことで、有名どころでは GET、HEAD、POST、PUT、DELETE というような、ページやファイルを web サーバーに(経由で)要求する、呼び出す方法です。
対応していないメソッド(MOVE/COPYなど)を使用した。」というのは一例で、ユーザーが Windows エクスプローラーなどを使い WebDAV 的にサイトにアクセスしようとしたような場合も、同様のエラーで処理します。

基本的には、GET と HEAD メソッド以外は 501エラーが返る可能性があります。
逆に言えば、GET や HEAD リクエストしているのに 501エラーが返る場合は、そのサーバーの設定が間違っているか、変なサーバーか、頭のおかしいサーバーということです。
もし、サーバーが MOVE メソッドが使える環境で、でも外部からは使わせたくないなど、使わせたくない(禁止している)だけなら、返すべきレスポンスは「405 Method Not Allowed」になります。

ヤンブ
あくまで原則で、MOVE メソッドが使える環境なのに「501 エラー」ページを見せるというようなサーバーは普通にあります。GET や POST メソッド(特に GET メソッド)が許可されていないようなサーバーは、そもそも普通に www ウェブを見せてくれないサーバーということになりますので、まずありません。

501エラーは誰に責任があるのか?

501エラー」が表示されてページが見えないという状態だと、誰に責任があるのでしょうか。

訪問者(閲覧者)が普通に有名プラウザからアクセスしている限りは、訪問者側のエラーではない可能性が大です。普通、訪問者の責任ではありません。
(わざと許可されないメソッドを使ってアクセスしてくる悪意のユーザーを除きます)

ということは、残るはサーバー設定者側の責任ということになります。

エックスサーバーの場合、501エラーで疑うべきことは?

なんとなく話の流れが読めてきたと思いますが、501エラーは外部からイタズラされたときにサーバーがよく返すエラーです。
ところが、悪意のあるユーザーでもないのに、むしろ WordPress でページを更新しているだけなのに、しかも管理者である投稿者に501エラーページを見せるなんて、エックスサーバーそのものが悪いのかと思いがちです。
疑う前に、まずその設定を確認しましょう。

エックスサーバー WAF

結論から言いますと、エックスサーバーそのものが悪いというのは、それは言い過ぎです。結論はユーザー(サーバー契約者)のウェブセキュリティを無闇に強めすぎている点にあります。

エックスサーバーで言えば、WAF設定(XSS対策)がそれに当たります。

エックスサーバー WAF 項目

とりあえず、エックスサーバーのサーバーパネル、「セキュリティ」からWAF設定の設定内容を確認します。
図のように「ON」になっていたら、まず「OFF」に設定して試します。
確認画面で設定を完了させたら、設定が反映されるまで最大で1時間程度(うまく行けば10分程度)待ちます。

その後、投稿更新を試してみましょう。
501エラー」が取り除けていれば、WAF 設定に問題があった(強めすぎていた)ということですね。
上はエックスサーバーの例ですが、他のサーバー会社でも同様の理由で「501エラー」を吐き出しているケースがあります。応用して対応できますのでチャレンジしてみてください。

エックスサーバーの場合は、上記設定を変えるだけでほぼ問題解決になると思います。

無制限機能盛りだくさんのレンタルサーバー

エックスサーバー 公式サイトはこちら

さて、WAF、XSSを無効にして大丈夫か?

WAF は Web Application Firewall の頭文字で、Web アプリケーションを外部から守るという役割をし、アクセス制限を細かく切り分ける役割をします。少しでもイケナイコードが含まれていたら、投稿させない、アクセスさせないなどの個別処理ができます。
XSS(クロスサイトスクリプティング)攻撃対策は、主に WAF の一部の機能として提供されています。

XSS(クロスサイトスクリプティング)攻撃

よく言われる XSS 攻撃は、WordPressなど、ウェブ掲示板や、サイトのコメント欄などに悪意のあるコード(Javascriptやイメージタグ)を意図的に埋め込み(書き込み)、そのコメントを見た閲覧者が、意図しないうちにマルウェアなどをダンロードさせます(実際には javascript ファイルや html をダウロードするケースが大半)。
ただのマルウェアなら、迷惑行為で済ませられるかもですが、多くのマルウェアもどきはユーザーのパスワードを盗もうと、偽ページを生成したりしてきます。複数のサイトにまたがって、本物サイトと詐欺サイトを横断してたくみに詐欺や泥棒を働くことから、クロスサイトスクリプティング(XSS)と呼ばれています。

一応は、サイトの表示や通常の運用に問題がないようであれば、WAF を有効にしておくほうが安心です。
一方、「サイトがエラーになっている」とか「書き込みができなくなった」などくクレームが届く場合は、とりあえず WAF をオフにしても問題が生じるか確認するのが先決です。
WordPress やプラウザそのものに XSS 攻撃に対する対策(プラグインもある)が施されてもいるので、わざわざWAF 有効にしなくても大差ないとする意見もあります。また、WAF を有効にするとサイトのパフォーマンスは下がりますので、使いたくない人も多いはずです。

結論から言えば、まだ様子を見つつ導入していく(設定を有効にしていく)という感じでしょうか。当サイトのように、プログラムのコードがネタになる記事、セキュリティネタが記事というものがある程度あるサイトの場合は、誤動作、思いがけない不穏な反応をすることがまだ多いので、全面的に導入することは様子を見てよさそうです。

結局この機能は、ワードプレスの投稿記事を「読み込んだシステムがプログラムコードとして処理してしまい、書き換えてはいけないファイルを書き換えたり消去したり、移動させたりする」ことを事前防止することを目的としたものです。例えばプログラムのサンプルを公開しようとして、一部に「CD」などのキーワードがあったりしても反応することがあるようです(つまり501エラーになる)。この例では、「CD」をコマンドと解釈され、触らせたくないディレクトリに移動され、見せたくないファイルが見られてしまう事故の事前防止と判断しているようです。
初心者はビビッて「有効にしておく」ことを盲目的に選択しがちですが、ワードプレスに関してはしっかりバージョンアップしておくだけで、特に「WAF」に頼り切る必要はありません。有効にして不具合が多く出るようなら、迷わずオフにして様子を見ましょう。

関連記事
レンタルサーバー選び
表示速度に注目したレンタルサーバー比較

黒円は東京・大阪からのアクセスした場合の平均応答速度、水色の円は名古屋からのアクセスした場合の平均応答速度です。 ピック ...

続きを見る

周辺エラーのチェック

「501」エラーのお話はこれくらいにしてその周辺を確認です。

500エラー

「500」エラーは「500 Internet Server Error(インターネット・サーバー・エラー)」のことです。

基本的な原因は、サーバーがプロセスを適切に処理できなかったときに発生します。例えば、きちんとしたわかりやすいエラーを返したかったけれど、サーバーのメモリがパンクしちゃって、サーバーがそれ以上何がなんだかわからなくなった・・・ようなときに返します。

典型的な例は負荷の大きい cgi を実行していて、その最中にサーバーのメモリを使い切ったようなケースがこの例に当たります。
心当たりある方は、この点をチェックですが、初心者がやりがちなのは次のようなものです。

  1. パーミッション設定に実行権限を付け忘れてエラー
  2. CGIやPHPの同時接続数が多くなりすぎて゜、サーバーが耐えられなくなってエラー
  3. CGI/PHPスクリプトのソースコードに文法的間違い(記述間違い)でエラー
  4. .htaccess の書き方が間違っている

.htaccessの記載ミスはよくやってしまうので、一番先にチェックしてもいいと思います。
一番初歩的なのは、タグの閉じ忘れです。
例) <IfModule>****/IfModule>
(タグがしっかり閉じられていない)

CGIのパーミッションに関しては、サーバーとしては実行権が与えられていないスクリプトを実行しろと言われても無理なので、「500」エラーで処理します。これはログにもしっかり残ります。
かつては、パーミッションを「777」に設定すると、とりあえずその場しのぎでうまくいくサーバーが多数だったのですが、Xserver ビジネスのようなセキュリティ重視のサーバーは、「777」というパーミッションを許可していません。
また、パーミッション「777」のフォルダで、何かを実行するのもアウトです。すべて「500 Internet Server Error」で処理されます。

パーミッション「777」でエラーになる場合は、「755」、「705」あたりも試してみましょう。要はウェブサーバーがどのユーザー権限で動くかを確かめて、ウェブサーバーにスクリプトの実行権限を与えるパーミッションにするだけです。実行モードは、VPSとレンタルサーバーでは大きく違う点ですので注意です(VPSの方がこのあたりは人のことを考えなくてもいいので簡単です)。

ヤンブ
パーミッション「777」は、誰でも読み・書き・実行できるという権限で、いわゆる誰でもフルアクセスできる権限です。

503エラー

「503 Service Unavailable」つまり、サービスが利用できないというエラーメッセージです。
ほぼ、外部からのアクセスが多すぎてサーバー落ちを防ぐため、意図的にエラーで処理しているケースです。
エラーと言うより警告に近いものです。
もし、PV数が増えすぎて安定してきて、この「503」をよく見かけるようであれば、「もう少し高いプランにアップグレードしなよ」という、サーバー会社からの警告と受け取ってもいいと思います。

関連記事
レンタルサーバー選び
表示速度に注目したレンタルサーバー比較

黒円は東京・大阪からのアクセスした場合の平均応答速度、水色の円は名古屋からのアクセスした場合の平均応答速度です。 ピック ...

続きを見る

関連記事
ロリポップ!
ロリポップはこう使え

当サイトで計測した、アナログな速度測定では並々な成績を収めた「ロリポップ!」、実はコストパフォーマンスに優れる老舗です。 ...

続きを見る

RECOMMEND

-WordPress, サーバー, 設定
-, , ,