サイト上にエラーページが表示されると、訪問者は高い確率で不快になってページを離れてしまいます。これはエンゲージメントや売上の損失にもつながる可能性があります。非常によくあるエラーとして「HTTPステータス405-Method Not Allowed」というメッセージがあります。

このエラーは発生した原因を具体的に述べずに問題が発生したことのみを知らせるので、解決するのが困難になり得ます。しかし、幸いなことに、少しばかりの辛抱と努力で、そう時間をかけずに元どおりにできます。

今回は405エラーとは何かを解説し、それが表示される様々なケースをご紹介します。また、実際にWordPressサイトで発生した際の解決方法もいくつか提示します。早速見ていきましょう。

「HTTPステータス405-Method Not Allowed」エラーとは?

サイトを運営していると、サイトがダウンしたり、リンクが切れたり、ページの読み込みが遅くなってしまったり、必ず何かしらのよくある問題に直面するものです。これらの問題はどれも一般的ですが、放っておくとユーザーエクスペリエンスの低下につながります。

残念ながら、中には解決がやや難しいものも存在します。「HTTPステータス405-Method Not Allowed」エラーメッセージがその一例です。これは、ウェブブラウザがあなたのサイトのいずれかのページへのアクセスをリクエストしたことを示すHTTPレスポンスステータスです。

この場合、ウェブサーバーはリクエストを受信、認識したものの、使用された特定のHTTPメソッドを拒否しています。ですので、ブラウザはリクエストしたページにアクセスできません。サイト訪問者には見たかったコンテンツではなく、エラーページが表示されます。

Google Chrome

Chromeの405 Not Allowedエラー(Nginx)画面
Chromeの405 Not Allowedエラー(Nginx)画面

Safari

Safariの405 Not Allowedエラー(Nginx)画面
Safariの405 Not Allowedエラー(Nginx)画面

Firefox

Firefoxの405 Not Allowedエラー(Nginx)画面
Firefoxの405 Not Allowedエラー(Nginx)画面

Microsoft Edge

Microsoft Edgeの405 Not Allowedエラー(Nginx)画面
Microsoft Edgeの405 Not Allowedエラー(Nginx)画面

「HTTPステータス405-Method Not Allowed」エラーは404 Not Foundエラーと混同してはいけません。404エラーは、リクエストされたURLが見つからない場合や間違った入力がされた場合に表示されます。一方、405エラーはリクエストされたページが実在することを(また、URLが正しく入力されたことを)確認した上で、リクエストをするのに使用されたHTTPメソッドが許可されないことを意味します。

「HTTPステータス405 – Method Not Allowed」エラーのバリエーション

405エラーのメッセージは上記のとおり表示されることが多いですが、ウェブサーバーやOS、ブラウザによっては異なるパターンで表示されることがあります。実際の問題もサーバーによって若干異なることがあり、それがエラー画面の表示のされ方に影響することがあります。

このエラーのバリエーションには例えば次のようなものがあります。

  • 405 Not Allowed
  • Method Not Allowed
  • HTTP 405エラー
  • HTTPエラー405 – Method Not Allowed
  • HTTP 405 Method Not Allowed

どのような画面で表示されているにしろ、405エラーの厄介なところは解決が難しいことがあるという点です。何か問題が発生していることを示しながらも、問題の原因は教えてくれないからです。多くの場合、自分で根本的な原因を見つけ、解決する必要があります。

WordPressサイトで「HTTPステータス405 – Method Not Allowed」エラーを解決する方法(考えられる7つの解決策)

考えられる解決策についてご紹介する前に、サイトのバックアップをとっておきましょう。そうすれば、何か間違いが起きてしまった場合でも、復元することができます。多くのレンタルサーバーでは、契約プランの中に、定期的なサイトのバックアップ機能が含まれています。Kinstaのホスティングプランをご利用のお客様の場合、バックアップの作成はとても簡単です

バックアップが完了したら、トラブルシューティングを開始しましょう。解決できる可能性の高いものから順にご紹介しているので、なるべく早く問題を解決できるように一覧の最初から読み進めてください。

それでは早速最も簡単なステップから見てみましょう。

1. 正しいURLを入力しているか確認する

あまりに単純なことのように思えるかもしれませんが、実は405エラーの最も一般的な原因は間違ったURLの入力です。多くのウェブサーバーで高い安全性が確保されていて、ユーザーが間違ったページを訪問(もしくは存在しないページにアクセスしようと)してしまわないように不適切なURLへのアクセスを拒否するよう設計されています。

そのため、次のステップに進む前に、サイトのURLを正しく入力しているかどうか再確認しましょう。1文字足りなかったり、単語のスペリングを間違えていたりと、思っている以上に簡単にURLを間違えてしまうものです。また、ページをリロードしてみるだけで正しく読み込めることもあります。

2. 直近のWordPressのアップデートを元に戻す

アップデートには大きなメリットがあります。通常はたくさんの魅力的な機能が追加で利用できるようになり、バグの修正やセキュリティホールのパッチが実装されます。しかし、そのプラスの側面とは裏腹に、時に問題を引き起こすこともあります。

405エラーが発生する直前にWordPressをアップデートしている場合、新しいコードが問題の根源である可能性があります。直近でアップグレードした拡張機能やテーマに関しても同じことが言えます。これについては次のセクションでより詳しくご説明します。

アップデートが原因かもしれないと思ったら、WordPressの一つ前のバージョンに戻してみましょう。繰り返しになりますが、この作業を行う前にサイト全体のバックアップをとっておくのを忘れないようにしましょう。変更を元に戻せなくなっては困ります。

アップデートを元に戻す作業は手動で行うこともできますが、最も簡単なのはプラグインを使用する方法です。様々なプラグインがありますがWP Downgradeが特におすすめです。このプラグインはプロセスの大部分を自動化してくれるため、手順を間違ってしまう可能性も低くなります。

こうしたツールを持っておくと、将来的に同じような問題が発生するのを防止するのにも役立ちます。もちろんアップデートが原因でなかった場合は、再びアップデートを実行するか、バックアップを復元しましょう。

3. 新しいプラグインやテーマをアンインストールする

プラグインはWordPressサイトにとって必要不可欠です。新しい機能が追加できたり、より複雑なプロセスを自動化できたりします。テーマも同じくらい重要です。テーマがなければ、美しいサイトを作成するのに複雑なコーディングをたくさんする(もしくは高額な費用で開発者を雇う)必要があります。

一方で、ソフトウェアアップデートと同様に、プラグインやテーマも時に問題を引き起こすことがあります。サイトに新しい機能を追加すると、それがどんな些細なものであっても、動作に影響が出るからです。使用しているプラグインかテーマに問題がある場合や、特定の機能がサイトの別の部分(もしくはWordPressのバージョン自体)と互換性がない場合があります。

その場合、特定のプラグインもしくはテーマをアンインストールすることで405エラーが解決することがあります。まずは、WordPressの管理画面から、「プラグイン」の画面を開きます。インストールしたプラグインの一覧が表示されているはずです。

WordPressのプラグイン画面
WordPressのプラグイン画面

その画面からプラグインを一つずつ無効化することができます。それぞれ無効化する度にサイトのエラーが解決したかどうか確認しましょう。少し時間がかかる作業ですが、問題を引き起こしているプラグインを特定することができます(プラグインに問題がある場合ですが)。

WordPressプラグインを無効化する方法
WordPressプラグインを無効化する方法

プラグインを確認し終わったら、今度は有効になっているテーマで同じプロセスを繰り返します。いずれかのテーマかプラグインが原因だった場合、開発者に問い合わせるか、該当のプラグイン/テーマを削除するか、入れ替えましょう。新たにWordPressのテーマをインストールする方法もあわせてご覧ください。

4. 意図せずデータベースの変更が起きていないか確認する

上記のステップでプラグインもしくはテーマに関連した問題を解決できるはずですが、それによって加えられた全ての変更が元に戻るとは限りません。WordPressプラグインでは特に言えることです。インストールするとすぐにデータベースへの完全なアクセスが許可されるため、思っている以上に深いところまで変更が加えられていることがあります。

開発者が明確にそうしないようにコーディングしていない限り、WordPressにより管理されているデータベースレコード(プラグインのものでなく)をプラグインが変更できてしまいます。その際に、プラグイン側はデータベースに加えられた変更を元に戻す方法がわからず、無効化を行ったとしても、それを放置してしまうことがあります。

この問題を診断するのは難しいですが、プラグインやテーマが405エラーの原因である疑いがある場合は、データベースを直接確認するのが一番でしょう。そのためには、サイトのデータベースを開き、プラグインやテーマによって変更を加えられたテーブルやレコードを手動で確認します。何を確認すればよいか分からない方には、開発者の助けを借りることをおすすめします(残りの方法に関しても、同じことが言えます)。

5. サーバーの設定を確認する

お持ちのサイトは恐らく2大サーバーソフトウェアであるApacheかNginxのいずれかを使用したサーバーで運営されているかと思います。実際、この2つを合わせると、世界中のウェブサーバーの84%という使用率です。ウェブサーバーソフトウェアの設定ファイルに意図しない指示が記述されていないか確認することで405エラーを解決できることがあります。

ウェブサーバーがどのアプリケーションを使用しているか確認するには、特定のファイルを見ます。例えば、ウェブサーバーがApacheを使用している場合、サイトのルートディレクトリ内に.htaccessファイルがあるはずです。

共用ホスティング上にある場合、あなたのアカウントに関連したユーザー名が使用されている可能性が高いです。その場合、アプリケーションのルートディレクトリは通常、次のパスを辿ると見つかります。

/home/public_html/

そのため、.htaccessファイルは次の場所にあるはずです。

/home/public_html/.htaccess

.htaccessファイルが見つかったらテキストエディタで開き、Rewriteディレクティブが使用されている箇所を探します。これはApacheのmod_rewriteモジュールの一部で、入力する全てのURLと照合される、テキストベースのパターンが定義されています。あなたのサイトで、合致するURLがリクエストされると、RewriteRuleによって訪問者は適切にリダイレクトされます。

分かりやすいように、受信する全てのリクエストをhttps://kinsta.comと照合し、405エラーコードで応答する、シンプルなRewriteRuleの例を以下にご紹介します。

RewriteRuleの一例
RewriteRuleの一例

ご覧のとおり、ルールの最後にR=405というフラグを使用しています。これはユーザーに対して、リソースは存在するものの使用しているHTTPメソッドが許可されていないことを示す405レスポンスコードで応答することを明確に指示しています。.htaccessの中にこれと同じような指示を含むおかしなRewriteディレクティブを見つけたら、#のプレフィックスを使って一時的にコメントアウトしましょう。その後、ウェブサーバーを再起動し、問題が解決したかどうか確認してみてください。

Kinstaをご利用中のお客様の場合、サーバーはApacheではなくNginxを利用しています。Nginxの設定に何か問題があると思われる場合には、当社のサポートチームまでお問い合わせください。

6. サーバーサイドログを確認する

大抵のウェブアプリケーションでは何かしらのサーバーサイドログを保存しています。通常、アプリケーションのログには、リクエストしたページや提供したデータベースの実行結果など、ソフトウェアが行った全てのことに関する履歴が残っています。

サバーログはアプリケーションが実際に動作しているハードウェアに関連するためそれぞれ少しずつ異なります。大抵、全ての接続したサービス、もしくはサーバー自体のステータスといった細かな情報が確認できます。

WordPressのサーバーログを確認するには、Secure File Transfer Protocol(SFTP)経由でサイトに接続します。ルートディレクトリにlogsというフォルダがあるはずです。フォルダの中にアクセスログとWordPressのエラーログが存在します。次のような名前のはずです。

  • Access.log
  • Error.log

ここからは一つ前の解決策でご紹介した方法と同じような手順を踏みます。ログを見て、おかしなところがないか確認します(もしくは開発者に代わりに確認してもらってください)。CodexにあるWordPressのデバッグに関する情報もあわせてご確認下さい。

7. アプリケーションのコードとスクリプトをデバッグする

上記のステップを行なっても解決しない場合は、WordPress内のカスタムコードに問題がある可能性があります。これが405エラーの原因であるかどうか特定する唯一の方法はデバッグすることです。

ステージング環境などオンラインもしくはローカルの開発エリアにサイト全体のコピーを作成するのが理想的です。ここからはサイトとそれに紐づいたソフトウェアに応じたデバッグのプロセスを行なっていきます。

残念ながら、これについては素早く解決する方法は存在しません。時間をかけてサイトのあらゆる部分を精査し、おかしな点がないか確認する覚悟をしなければなりません。とは言え、正常に機能するサイトを取り戻すためには必要な労力でしょう。

どの方法でも解決しない場合は?

まだこの記事を読み進めているということは、これまでご紹介してきた方法では405エラーを解決できなかったということでしょう。それは恐らくより複雑な問題が発生していることを意味するので、熟練の開発者でない限り、自分で解決できるような問題ではないということです。

そんな場合には、直接ホスティングサービスプロバイダー(レンタルサーバー)に問い合わせるのが一番です。ライブチャットやチケットサービスによる24時間365日体制のカスタマーサポートなどが利用できるはずです。通常、ライブチャットの方が迅速に解決できることが多いですが、メールや電話で問い合わせることも可能です。

まとめ

どれだけ注意深くサイトを最適化したとしても、一度はエラーメッセージが表示されるのは避けられないことです。訪問者が関心を無くしてしまわないように、問題を素早く解決することが不可欠です。405エラーは少し厄介ですが、いくつかのトラブルシューティングを試すことで大抵は解決できます。

WordPressサイトで405エラーが発生した場合の対処法を順番におさらいします。

  • アドレスバーに正しいURLを入力していることを確認する。
  • 直近で行なったWordPressのアップデートを元に戻し、問題の原因ではないか確認する。
  • 新しいプラグインやテーマを一つずつ無効化してみる。
  • 意図せずデータベースに変更が加えられていないか確認する。
  • サーバーの設定を確認する。
  • WordPressに保存されているサーバーサイドログを確認する。
  • アプリケーションのコードとスクリプトをデバッグする。

405エラーについて他にご質問がある方、他にも記事で取り扱ってほしいエラーメッセージがあるという方は、コメント欄で是非お聞かせください!

Matteo Duò Kinsta

Head of Content at Kinsta and Content Marketing Consultant for WordPress plugin developers. Connect with Matteo on Twitter.