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なら、次の順番で確認すると範囲を絞りやすくなります。
- 別の管理画面URLやログインURLの入力ミスがないか
- ホスティング側の管理画面保護・IP制限
- WAFのブロック履歴
- セキュリティプラグインのログ
.htaccessやサーバー設定の管理画面向け制限- 会社・VPN・固定IPなどアクセス元の変化
ログインURLそのものへ到達できるのに認証で失敗する場合は、403とは別の問題として扱います。
解決しない場合にサーバーへ伝える情報
サポートへ問い合わせるときは「403が出る」だけでなく、次の情報をまとめます。
- 403になった正確なURL
- 発生日時とタイムゾーン
- サイト全体か特定URLか
- 公開ページと
wp-adminのどちらで起きるか - 利用しているWAF・CDN・アクセス制限
- 直前に変更したテーマ・プラグイン・サーバー設定
- ブロックログやエラーログの該当時刻
これだけでも、WordPress側かホスティング側かの切り分けが進みやすくなります。
よくある質問
同じではありません。401は対象リソースに有効な認証情報がない状態、403はサーバーがリクエストを理解したうえで処理を拒否する状態です。
直るとは限らず、不要に権限を広げるため推奨できません。ホスティングの構成に合う所有者・権限を確認し、必要な範囲だけ修正します。
WAFが原因なら検証中に変化する場合はありますが、無効化を恒久対策にはしません。ブロック理由を確認し、正当な操作だけ許可できる設定へ調整します。
まとめ
WordPressの403 Forbiddenは、アクセスが拒否されている範囲から確認します。サイト全体、wp-admin、特定URLでは疑う設定が異なります。
WAFやセキュリティ機能をいきなり解除せず、ログ、アクセス元、.htaccess、ファイル権限を順番に確認してください。安全性を落とさず原因だけを解消することが重要です。