WordPressの403 Forbiddenエラー原因と直し方|アクセス拒否の対処手順

WordPressで403 Forbiddenが表示された場合、サーバーはリクエストを理解したうえで処理を拒否しています。原因はパスワードだけではなく、WAF、IP制限、ファイル権限、.htaccess、セキュリティプラグインなどさまざまです。

最初に403になる範囲を確認すると、必要以上に設定を変更せずに済みます。ほかのHTTPコードとの違いはWordPressのHTTPエラー一覧で確認できます。

WordPressの403 Forbiddenエラーとは

HTTPの403 Forbiddenは、サーバーがリクエストを理解したものの、その処理を拒否する状態です。認証情報があっても権限が不足している場合がありますが、認証とは無関係なポリシーやアクセス制御で403になることもあります。

401 Unauthorizedは有効な認証情報がない状態を示すコードで、403とは役割が異なります。WordPressサイトで「アクセスできない」という見た目だけで判断せず、実際のステータスコードを確認してください。

403が出る範囲を最初に確認する

403がどこで出るかによって、確認対象を絞れます。

サイト全体が403になる

トップページを含めてすべて403なら、WAF、サーバー側のアクセス制限、ドキュメントルートの権限、.htaccessなどを優先して確認します。ホスティングの管理画面に拒否ログがある場合は、先にログを見ます。

wp-adminだけ403になる

公開ページは見られるのにwp-adminだけ403なら、管理画面のIP制限、ログイン保護、セキュリティプラグイン、WAFルールなどが候補です。

403ではなくログイン画面へ戻る、パスワードが通らないといった症状ならWordPressにログインできない場合を確認します。

特定ページ・REST APIだけ403になる

特定URLだけ403なら、そのURLに対するアクセス制御やWAFルールを調べます。REST APIだけなら、認証・権限・セキュリティ設定も確認します。REST APIの基本仕様はWordPress REST APIの基礎へ分けます。

WAF・IP制限・セキュリティ設定を確認する

WAFやホスティングのセキュリティ機能は、不正なリクエストを遮断するために403を返すことがあります。管理画面にブロック履歴がある場合は、エラーが出た時刻、URL、アクセス元IPを照合します。

「403だからWAFを無効化する」と決めつけないでください。必要なら短時間の検証で原因を切り分け、原因が分かったら例外ルールや正しい設定へ調整します。WAFを恒久的に無効化すると本来の防御まで失います。

セキュリティプラグインを確認する

ログインURL変更、アクセス回数制限、国・IP制限、REST API制限などを行うプラグインでは、意図した防御が403として現れることがあります。

直前に設定を変えた場合は、その変更履歴とプラグインのログを確認します。サイト全体の防御設計はWordPressのセキュリティ対策も参照してください。

.htaccessのアクセス制御を確認する

ApacheやLiteSpeed系の環境では、.htaccessにアクセス許可・拒否、Basic認証、rewriteなどの設定が入ることがあります。誤ったルールや古い制限が403の原因になる場合があります。

編集前に必ずコピーを保存し、ホスティングやWordPressが自動生成する領域を不用意に書き換えないでください。Nginx環境では通常.htaccessではなくサーバー設定側を確認します。

Basic認証を使っているサイトでは、WordPressのBasic認証設定も確認します。

ファイル・ディレクトリの権限を確認する

ファイル所有者やパーミッションがWebサーバーの実行条件と合っていないと、アクセス拒否につながることがあります。

WordPress公式のハードニング資料では、構成例としてディレクトリ755、ファイル644が挙げられていますが、これはすべてのホスティングで固定の正解ではありません。所有者、グループ、Webサーバー実行ユーザーによって適切な値は変わります。

原因確認のために権限を777へ広げる方法は避けてください。分からない場合はホスティングの推奨値を確認します。

WordPress管理画面だけ403になる場合

wp-adminだけ403なら、次の順番で確認すると範囲を絞りやすくなります。

  1. 別の管理画面URLやログインURLの入力ミスがないか
  2. ホスティング側の管理画面保護・IP制限
  3. WAFのブロック履歴
  4. セキュリティプラグインのログ
  5. .htaccessやサーバー設定の管理画面向け制限
  6. 会社・VPN・固定IPなどアクセス元の変化

ログインURLそのものへ到達できるのに認証で失敗する場合は、403とは別の問題として扱います。

解決しない場合にサーバーへ伝える情報

サポートへ問い合わせるときは「403が出る」だけでなく、次の情報をまとめます。

  • 403になった正確なURL
  • 発生日時とタイムゾーン
  • サイト全体か特定URLか
  • 公開ページとwp-adminのどちらで起きるか
  • 利用しているWAF・CDN・アクセス制限
  • 直前に変更したテーマ・プラグイン・サーバー設定
  • ブロックログやエラーログの該当時刻

これだけでも、WordPress側かホスティング側かの切り分けが進みやすくなります。

よくある質問

Q
403と401は同じエラーですか?
A

同じではありません。401は対象リソースに有効な認証情報がない状態、403はサーバーがリクエストを理解したうえで処理を拒否する状態です。

Q
ファイル権限を777にすれば403は直りますか?
A

直るとは限らず、不要に権限を広げるため推奨できません。ホスティングの構成に合う所有者・権限を確認し、必要な範囲だけ修正します。

Q
WAFを切れば403は解消できますか?
A

WAFが原因なら検証中に変化する場合はありますが、無効化を恒久対策にはしません。ブロック理由を確認し、正当な操作だけ許可できる設定へ調整します。

まとめ

WordPressの403 Forbiddenは、アクセスが拒否されている範囲から確認します。サイト全体、wp-admin、特定URLでは疑う設定が異なります。

WAFやセキュリティ機能をいきなり解除せず、ログ、アクセス元、.htaccess、ファイル権限を順番に確認してください。安全性を落とさず原因だけを解消することが重要です。

この記事を書いた人

Hara Daizo

Hara Daizo

Web制作会社、Web担当者を経て独立。17年以上の実務経験で培った制作スキルとSEOノウハウを活かし、現在はSTARRY代表としてWordPressサイト制作・集客サポートを提供。大手クラウドソーシングのWebデザイナーランキング上位受賞多数。