速度改善・安全対策

WordPressで405 Method Not Allowedが出るときの直し方|REST API・サーバーの安全な確認順

WordPressの記事保存、フォーム送信、外部連携、REST APIで「405 Method Not Allowed」と表示されることがあります。ページは開けるのに送信だけ失敗する、APIテストではGETは通るのにPOSTやDELETEが拒否される、といった症状です。

405は、サーバーが受け取ったHTTPメソッド自体は知っているものの、そのURLでは許可していない状態です。URL、GET・POST・PUT・PATCH・DELETE・OPTIONSなどのメソッド、REST APIのルート、CDN・WAF、Webサーバー設定を分けて確認します。

405を直すために、すべてのHTTPメソッドを許可したり、WAFや認証を全面停止したりしないでください。必要なURLに、必要なメソッドだけを許可することが安全な復旧の基本です。

先に結論:405エラーは8段階で確認する

  1. 送信を止め、記事本文やフォーム入力を退避する
  2. 失敗した完全なURL、HTTPメソッド、時刻を記録する
  3. GETで開く画面と、POSTなどの送信操作を分ける
  4. 応答のAllowServer、CDN識別情報を確認する
  5. WordPress REST APIのルートと対応メソッドを確認する
  6. リダイレクト、CDN・WAF、Webサーバーの順に発行元を絞る
  7. クライアントか対象URLの設定だけを修正する
  8. 復旧後に不要なメソッドが拒否されることも確認する

記事保存で別のエラー文言も出る場合は、WordPressの「正しいJSONレスポンスではありません」を直す確認順も使い、実際のHTTP 405と応答本文を確認してください。

405 Method Not Allowedとは?

RFC 9110の405 Method Not Allowedは、要求行のメソッドをサーバーは認識しているものの、対象リソースでは対応していない状態です。405を返すオリジンサーバーは、現在対応するメソッドをAllowヘッダーで示す必要があります。

たとえば、読むためのURLへGETを送る、作成用エンドポイントへPOSTを送る、削除用エンドポイントへDELETEを送る、という対応があります。同じURLでも複数メソッドを受け付ける場合があり、URLだけを見ても正しい操作かは判断できません。

405は「ログインできない」「権限が足りない」と同じではありません。認証情報が不足する401、要求を理解した上で拒否する403、URLやルートが見つからない404とは切り分けます。

送信方法と対象リソースの受付形状が合わず拒否されるイメージ

401・403・404・405・415の違い

表示主な意味最初に見るもの
401 Unauthorized有効な認証情報がない、または拒否された認証方式、資格情報
403 Forbidden要求は理解されたが処理を拒否された権限、WAF、アクセス制限
404 Not Found対象リソースやルートが見つからないURL、公開状態、ルート登録
405 Method Not Allowedメソッドは認識されたが対象URLでは非対応Request Method、Allow、ルート仕様
415 Unsupported Media Type送信形式が対象メソッドで非対応Content-Type、本文形式

認証が疑われる場合はWordPressの401 Unauthorizedを直す手順、WAFや権限の拒否ならWordPressの403 Forbiddenを直す手順、通常のページが見つからない場合はWordPressの404エラーを直す確認順へ進みます。

WordPress REST APIでは405以外になる場合がある

WordPress REST API公式のRoutes and Endpointsでは、URLのルートとHTTPメソッドの組み合わせでエンドポイントが決まります。GET、POST、PUT、DELETE、OPTIONSなどは役割が異なり、登録された組み合わせだけが処理されます。

ただし、WordPressコアがルートとメソッドの組み合わせを見つけられない場合、必ず405を返すわけではありません。WordPressのWP_REST_Server公式コード資料では、「URLと要求メソッドに一致するルートがない」というrest_no_routeをHTTP 404で返す実装が確認できます。

そのため、405ならWebサーバーやCDNが必ず原因とも、WordPress本体が必ず原因とも断定できません。独自プラグインや外部APIが405を返す場合もあります。実際の応答本文、Allow、応答ヘッダー、各層のログを照合します。

最初の10分で行う安全な初動

1.入力内容を退避し、再送信を止める

記事保存やフォーム送信で失敗したら、本文や入力内容をローカルの安全な場所へコピーします。外部ツールやAPIクライアントの自動再試行も止めます。POSTなどは同じ要求でも新しいデータを作る可能性があるため、エラー後の連打を避けます。

管理画面や通知で、処理が途中まで成功していないか確認します。405画面が出ても、CDNやプラグインが応答を書き換えた可能性があるため、保存・注文・登録が絶対に失敗したとは断定しません。

2.完全なURLとHTTPメソッドを記録する

発生時刻とタイムゾーン、操作、完全なRequest URL、Request Method、Status 405、応答本文を記録します。ブラウザのNetworkでは、失敗した要求を一つ選び、リダイレクト前後のURLとメソッドも確認します。

Cookie、Authorization、nonce、APIトークン、フォームの個人情報は保存・共有しません。HARをサポートへ送る場合も秘密値と本文を削除し、URL、メソッド、ステータス、時刻、要求IDを中心に伝えます。

3.GET表示と送信操作を分ける

ページを開くGETが405なのか、フォームのPOSTやAPIのPUT・PATCH・DELETE・OPTIONSだけが405なのかを分けます。公開ページのGETまで405なら、サーバーや転送設定の影響を優先します。特定機能の送信だけなら、そのフォームやAPIルートを優先します。

同じURLへ別メソッドを手当たり次第に送らないでください。削除や更新を伴うメソッドが通ると、データを変更する可能性があります。仕様書、REST APIインデックス、プラグイン公式資料で対応メソッドを先に確認します。

どの層が405を返したか特定する

応答のAllowにGETやPOSTなどがあれば、対象URLが現在受け付けるメソッドの手がかりになります。ただし、Allowがない405や、実際の動作と矛盾する値なら、独自実装や中継層の応答も疑います。

確認場所手がかり主な確認内容
ブラウザ・外部ツール想定と違うメソッド、古いAPI URLクライアント設定、送信先、更新履歴
CDN・WAF・プロキシ独自画面、識別ID、配信元ログに要求なし許可メソッド、ルール、キャッシュ
Webサーバーアクセスログに405、静的URLへのPOSTlocation、転送、メソッド制限
WordPress・プラグインJSON応答、プラグイン固有コードRESTルート、フォームaction、更新差分
外部API相手サービスのエラー本文API版、URL、対応メソッド、認証

405は仕様上キャッシュ可能な応答です。CDNやプラグインの設定によっては、修正後も古い405が残る可能性があります。ただし、最初から全キャッシュを消すのではなく、設定修正後に対象URLとメソッドのキャッシュだけを確認します。

REST APIの送信方法とゲートウェイ設定を調査するイメージ

原因別の安全な直し方

1.フォームの送信先やメソッドが違う

フォームの送信先URL、固定ページURL、REST API URL、外部サービスURLを混同していないか確認します。フォームやプラグインの更新後にURLが変わった、テスト環境の送信先が残った、静的ファイルへPOSTしている、といった差分を調べます。

お問い合わせフォームなら、フォーム本体の設定、完了ページ、JavaScriptの送信先、キャッシュを分けます。メールが届かないだけで405がない場合は、WordPressからメールが届かないときの確認手順が対象です。

2.REST APIのURLとメソッドが一致していない

WordPressのREST APIインデックスや対象プラグインの公式資料で、ルートと対応メソッドを確認します。GETで取得するURLへPOSTを送る、コレクション用URLと個別IDのURLを取り違える、古いAPIバージョンを使うなどのずれを修正します。

一部のクライアントがDELETEなどを送れない場合、WordPress REST APIは_methodまたはX-HTTP-Method-Overrideを利用する仕組みを持ちます。WordPress公式のmethod override資料では、POST要求でだけ使うよう案内されています。対応確認なしにGETへ付けたり、認証を回避する目的で使ったりしません。

3.リダイレクト先が送信を受け付けない

HTTPからHTTPS、www有無、旧ドメイン、新しいREST APIパスへの転送を確認します。フォームやAPIの送信URLは、転送前ではなく最終の正規URLへ直接合わせます。転送途中でメソッドや本文が変わる可能性があるためです。

転送が何度も続く場合は、WordPressのリダイレクトループを直す確認順で、WordPress、CDN、Webサーバーの転送を分けてください。

4.CDN・WAF・プロキシがメソッドを拒否する

CDN・WAFのイベントログで、対象URL、メソッド、送信元、要求IDを確認します。DELETEやPUTだけでなく、ブラウザの外部連携で使われるOPTIONSが中継層で拒否され、実際の送信前に405になる場合もあります。

全メソッド許可へ変えるのではなく、正当な送信元、対象パス、必要なメソッド、認証条件を限定します。WAFを停止したままにせず、検証後はルールとログを確認して防御を戻します。

5.Webサーバーのパス設定がWordPressへ届いていない

静的ファイル用のパス、管理画面、/wp-json/、独自APIパスで処理先が異なる場合があります。アクセスログで405を返したlocationや仮想ホストを確認し、WordPressへ渡すべき要求が別の処理へ入っていないかをサーバー会社へ確認します。

.htaccessやNginx設定を丸ごと置き換えず、変更前の設定と戻し方を保存します。本番での直接変更を避ける方法はWordPressのテスト環境を作る手順で確認できます。

6.プラグイン・テーマ・独自コードのルートが変わった

更新直後から発生した場合は、変更履歴、RESTルート、フォームaction、JavaScriptの送信先を確認します。プラグインを一括停止せず、ステージング環境またはホストの安全な切り替え方法で、原因候補を一つずつ比較します。

独自RESTルートでは、必要なメソッドと権限確認を正しく登録する必要があります。メソッドを増やしてエラーだけ消すのではなく、読み取り・作成・更新・削除の処理と権限を一致させます。不要プラグインの整理はWordPressプラグインを安全に減らす方法を参考にしてください。

7.外部APIの仕様やバージョンが変わった

決済、CRM、投稿、バックアップなど相手側APIのURL、バージョン、対応メソッド、廃止予定を公式資料で確認します。405を認証エラーと誤解してWordPressの主パスワードを変えず、外部連携ごとの資格情報と設定を分けます。

APIキーやApplication PasswordをURLへ移して回避しないでください。認証情報の扱いはWordPressの401 Unauthorizedを直す確認順で整理できます。

正しいURLと送信方法を選びセキュリティを保って復旧するイメージ

405対応でやってはいけないこと

  • サーバーですべてのHTTPメソッドを許可する
  • WAF、認証、nonce、REST APIを全面停止する
  • GET、POST、PUT、DELETEを手当たり次第に送る
  • 更新・削除要求を連打する
  • 認証情報や個人情報をURLへ移す
  • 405を正常な200応答へ見せかける
  • .htaccessやサーバー設定を丸ごと削除する
  • 全プラグイン停止とキャッシュ全消去を同時に行う
  • Allowだけを見て発行元を断定する
  • 修正後に不要メソッドが拒否されるか確認しない

復旧後に確認すること

  • 対象URLへ正しいメソッドで一度だけ成功する
  • 公開ページのGETと管理画面が正常に開く
  • 記事保存、フォーム、外部連携が必要な範囲で動く
  • 不要なメソッドは引き続き拒否される
  • 認証、nonce、WAFなど必要な防御が有効である
  • 転送後もURL、メソッド、本文が意図どおりである
  • CDNやプラグインに古い405が残っていない
  • アクセスログで405が繰り返されていない

公開ページのGETが意図せず405を返している場合は検索にも影響します。GoogleのHTTPステータス公式資料では、429以外の4xxを返すURLの内容は検索に利用されず、既存URLも時間とともにインデックスから外れると説明されています。APIのPOST専用URLと、検索対象の公開ページを分けて確認します。

サポートへ伝える情報

  • 発生日時とタイムゾーン
  • 完全なRequest URLとRequest Method
  • HTTP 405と応答本文
  • AllowServer、CDN識別ID
  • GET表示と送信操作の比較結果
  • リダイレクト前後のURLとメソッド
  • WordPress、プラグイン、外部APIの更新履歴
  • 秘密情報を伏せた要求IDとログ
  • 直前に変更したWAF・サーバー・フォーム設定

「405を直してください」だけでなく、「7月22日16時、公開ページのGETは200。問い合わせ送信のPOSTだけ405。AllowはGET、HEAD。CDN識別IDあり、配信元ログにPOSTなし」のように伝えると、調査する層を絞れます。

よくある質問

405ならAllowに書かれたメソッドへ変えればよいですか?

必ずしもそうではありません。目的が更新なのにGETしか許可されていない場合、送信先URLが違う可能性があります。データを変える前に、対象機能の公式仕様と正しいURLを確認してください。

パーマリンクを保存し直せば直りますか?

RESTルートや書き換え設定が壊れている場合は候補ですが、すべての405に効く万能策ではありません。公開記事まで404になるなど書き換え固有の症状があるときだけ、バックアップ後に対象を確認します。

キャッシュ削除で直りますか?

設定修正後も古い405が残る場合は候補です。ただし、誤ったURLやメソッド、WAF・サーバー設定が原因ならキャッシュだけでは直りません。先に発行元と設定差分を確認します。

WordPress REST APIで違うメソッドを送ると必ず405ですか?

必ずではありません。WordPressコアは、URLとメソッドに一致するルートがないと404のrest_no_routeを返す場合があります。405が出たら、WordPressへ届く前の層や独自実装も含めて確認します。

OPTIONSだけ405になるのはなぜですか?

ブラウザの外部連携で、実際の送信前にOPTIONSを使う場合があります。CDN、WAF、プロキシ、WebサーバーがOPTIONSを拒否すると、POSTなど本来の要求まで進みません。対象Originとパス、必要メソッドを確認し、全サイトへ無制限に許可しないでください。

まとめ

WordPressの405 Method Not Allowedは、サーバーが知っているHTTPメソッドを、対象URLでは受け付けない状態です。完全なURL、Request Method、Allow、応答本文を記録し、クライアント、CDN・WAF、Webサーバー、WordPress・プラグイン、外部APIを分けます。

安全な復旧の基本は、必要なURLに必要なメソッドだけを対応させ、不要なメソッドと防御を開放しないことです。発行元を判断できない場合は、URL、メソッド、時刻、Allow、比較結果をそろえてホストや開発元へ相談してください。

-速度改善・安全対策