403 Forbiddenとは?意味・原因と解決方法|見る側・サイト運営側・開発側の確認手順
403エラー(403 Forbidden)は、「サーバーはリクエストを理解したが、実行を拒否した」という意味です。ページが無いわけでも、サーバーが落ちているわけでもありません。アクセスする権利がないと断られている状態です。
先に結論。403は「権限の問題」なので、リロードしても直りません。確認する場所は立場で変わります。
403 Forbiddenとは?意味をひとことで
HTTPステータスコードの403はForbidden(禁止)です。リクエストはサーバーに正しく届いていて、サーバーも内容を理解しています。そのうえで「あなたには見せません」と返しています。
似たエラーと並べると、403の性質がはっきりします。
| コード | 意味 | ひとことで | リロードで直るか |
|---|---|---|---|
| 403 Forbidden | 禁止されている | ある。でも見せない | 直らない |
| 401 Unauthorized | 認証が必要 | まだ名乗っていない | ログインすれば通る |
| 404 Not Found | 見つからない | そもそも無い | 直らない |
| 429 Too Many Requests | リクエストが多すぎる | 少し待って | 時間を置けば直る |
| 503 Service Unavailable | 一時的に使えない | 今は無理 | 時間を置けば直ることが多い |
いちばん紛らわしいのは401との違いです。401は「まだ名乗っていない」、403は「名乗ったうえで断られた」です。ログインしても403が出るなら、そのアカウントに権限がありません。
画面のメッセージ別:403の原因の見分け方
403の画面は、どこが拒否したかによって見た目が違います。表示されている文言から、拒否した場所の見当がつきます。
| 表示されるメッセージ | 拒否しているもの | 主な原因 |
|---|---|---|
ForbiddenYou don't have permission to access this resource. |
Apache(レンタルサーバーに多い) | パーミッション、.htaccess、インデックスファイルが無い |
403 Forbidden の下に nginx |
nginx | パーミッション、設定ファイルの deny、インデックスファイルが無い |
Error 1020: Access deniedSorry, you have been blocked |
Cloudflare | サイト側のファイアウォールルール、ボット判定 |
403 ERRORThe request could not be satisfied. |
Amazon CloudFront | 地域制限、WAF、配信元(S3など)の権限 |
AccessDenied(XML形式) |
Amazon S3 | バケットポリシー、公開設定、署名付きURLの期限切れ |
403. That's an error.Your client does not have permission... |
Googleのサービス | アカウントの権限、共有設定、ネットワークの制限 |
| レンタルサーバー独自の「アクセスが制限されています」画面 | サーバー会社のWAF・国外IP制限 | WAFの誤検知、海外からのアクセス制限 |
Cloudflareのエラー番号(1020・1015など)ごとの対処はCloudflareにブロックされたときの解除方法にまとめています。
ページを見る側:403が出たときの対処法
あなたの環境が原因のことがあります。上から順に試してください。
- URLを確認する:ディレクトリ名だけのURL(末尾がスラッシュ)で403が出ることがあります。フォルダの中身の一覧表示を禁止している、サーバーの正常な設定です
- ログインし直す:会員限定ページなら、ログインし直すと通ることがあります
- VPN・プロキシを切る:海外からのアクセスや、特定のVPNの接続元を遮断しているサイトがあります
- キャッシュとCookieを消す:古いセッション情報が残っていると拒否されることがあります
- 別の回線で開く:Wi-Fiを切ってスマホのモバイル回線で開けたら、IPアドレス単位で弾かれています
それでも403なら、見る側では解決できません。サイトの運営者に「どのURLで」「いつ」403が出たかを伝えて問い合わせてください。
サイト運営側:403の原因と解決方法
自分のサイトで403が出ているなら、原因はほぼ次の5つです。上から順に確認すると早く見つかります。
1.ファイル・ディレクトリのパーミッション
最も多い原因です。Linuxサーバーでは、ファイルごとに「誰が読めるか」を決めるパーミッションがあり、Webサーバーが読めないと403になります。
| 対象 | 基本の値 | 403の原因になりやすい値 |
|---|---|---|
| ディレクトリ | 755 | 700(Webサーバーが中に入れない)/777(拒否するサーバーがある) |
| ファイル | 644 | 600(Webサーバーから読めない) |
| CGI・実行ファイル | 755 | 644(実行できない) |
FTPソフトやサーバーの管理画面で変更できます。SSHが使えるなら次のように確認・変更します。
# 権限を確認する
ls -l public_html/
# ディレクトリを755、ファイルを644にする
chmod 755 public_html/blog
chmod 644 public_html/blog/index.html
「777にすれば直る」は誤りです。誰でも書き換えられる危険な状態になるうえ、セキュリティのために777を拒否するサーバーもあります。
2..htaccess のアクセス制限
Apacheのサーバーでは、.htaccess に書いたアクセス制限が原因のことがよくあります。一時的にファイル名を変えて(例:.htaccess_bak)、403が消えるか確かめてください。消えたら、中身のどこかが原因です。
# すべて拒否している(Apache 2.4の書き方)
Require all denied
# 特定のIPだけ許可している(ここに自分のIPが無いと403)
Require ip 192.0.2.0/24
# 古い書き方(Apache 2.2)。同じく「すべて拒否」
Order deny,allow
Deny from all
WordPressでは、セキュリティ系プラグインが .htaccess に制限を書き込むことがあります。プラグインを入れた直後に403が出始めたら、まずそれを疑ってください。
3.WAF・セキュリティ機能の誤検知
レンタルサーバーやCDNのWAF(Web Application Firewall)が、正常なリクエストを攻撃と誤認して403を返すことがあります。記事の保存やフォーム送信のときだけ403になるなら、ほぼこれです。本文に含まれるコードや特定の文字列が、攻撃のパターンに似ていると判定されます。
管理画面でWAFのログを見て、遮断された記録があれば、そのルールだけを除外します。WAF全体を止めたままにするのは危険です。AWSでの具体的な手順はWAF 403エラーを解決!原因特定からAWSの除外設定までにまとめています。
4.IPアドレス・国外アクセスの制限
サーバー会社の「国外IPアクセス制限」や、ログイン失敗が続いたときの自動ブロックで、特定の人だけ403になることがあります。海外出張中に自分のサイトの管理画面へ入れない、というのが典型です。管理画面のアクセス制限の設定を確認してください。
5.インデックスファイルが無い
ディレクトリに index.html や index.php が無く、フォルダの中身の一覧表示も禁止されていると403になります。これはサーバーの正常な動きです。インデックスファイルを置くか、正しいファイル名のURLにしてください。
開発側:プログラムやAPIで403が返ってきたとき
APIやプログラムからのアクセスで403が出たら、まずレスポンスの本文を読んでください。多くのAPIは、なぜ拒否したかを本文に書いて返しています。Pythonの requests なら次のように確認できます。
import requests
r = requests.get("https://api.example.com/v1/items",
headers={"Authorization": "Bearer YOUR_TOKEN"})
print(r.status_code) # 403
print(r.text) # 拒否の理由が書かれていることが多い
print(r.headers) # どのサーバー・CDNが返したかの手がかり
r.raise_for_status() # 4xx・5xxなら例外にして処理を止める
| 状況 | 確認すること |
|---|---|
| APIを呼んで403 | APIキー・トークンの有効期限/そのキーに必要な権限(スコープ)が付いているか/無料枠で使えない機能ではないか |
| クラウドのストレージで403 | IAMの権限、バケットポリシー、公開設定、署名付きURLの有効期限 |
| Webページの取得(スクレイピング)で403 | サイトの利用規約とrobots.txt、公式APIの有無 |
| git pushで403 | 認証情報(トークン)/そのリポジトリへの書き込み権限 |
| ブラウザのJavaScriptから別ドメインのAPIで403 | サーバー側の許可設定。403ではなくCORSエラーとして表示されることもある |
スクレイピングで403が返ってきたら、回避の方法を探す前に立ち止まってください。403は、サイト側の「機械からのアクセスはお断り」という明確な意思表示です。利用規約とrobots.txtを確認し、公式のAPIやデータ提供が無いかを先に調べるのが筋です。アクセスが多すぎて断られた場合は、403ではなく429エラーが返るのが一般的です。取得の基本はPython WEBスクレイピング入門で解説しています。
git pushの403はGit pushとは?使い方・基本コマンド・エラー対処法、Pythonのエラー全般はPythonエラー一覧と対処法にまとめています。
403はSEOに影響するのか
意図しない403は問題です。Googlebotが403を受け取ると、そのページを読めません。403が続けば、検索結果から外れていきます。
意図した403は問題ありません。会員限定ページや管理画面など、見せたくないページを403にするのは正しい使い方です。
怖いのは、公開したいページがWAFの誤検知や国外IP制限で403になっているケースです。Googlebotの多くは米国から来るため、国外IP制限をかけるとGoogleにも見えなくなることがあります。Search Consoleの「ページ」レポートに403が出ていないか、定期的に確認してください。
よくある質問
403と404はどう違いますか?
403は「ある。でも見せない」、404は「無い」です。403はアクセス権の問題なので、URLを直しても解決しません。404については404エラーとは?原因と対処法をご覧ください。
リロードすれば直りますか?
直りません。403は一時的な混雑ではなく権限の問題です。時間を置けば直ることが多いのは503エラーや429エラーのほうです。
スマホでは見られるのに、パソコンだと403になります
回線(IPアドレス)が違うためです。パソコン側の回線やVPNが、サイト側で遮断されている可能性があります。会社のネットワークからだけ403になる場合も同じ理由です。
パーミッションを777にしてもいいですか?
やめてください。誰でも書き込める状態になり危険です。サーバーによっては777を拒否して403を返します。ディレクトリ755・ファイル644が基本です。
WordPressの記事を保存しようとすると403になります
サーバーのWAFが、記事の本文を攻撃と誤認している可能性が高いです。本文にプログラムのコードやファイルのパスを書いていると起きやすくなります。サーバーの管理画面でWAFのログを確認し、該当するルールを除外してください。
関連記事
HTTPのエラー全般はHTTPステータスコード一覧、似たエラーは401エラー・404エラー・429エラー・503エラー、WAFの誤検知はWAF 403エラーの解決にまとめています。
テックジムは月額22,000円の通い放題でプログラミング教室を運営しています。東京本校(永田町)では毎週土曜にゼロから始めるPython入門講座、そしてゼロから始めるClaude Code講座を無料で開いています。どちらも説明会ではなく実際に手を動かす講座です。
まとめ
403エラー(403 Forbidden)はアクセス権の拒否です。リロードでは直りません。
- 見る側:URL・ログイン状態・VPN・キャッシュ・回線を確認。だめなら運営者に連絡
- サイト運営側:パーミッション(755/644)→ .htaccess → WAF → IP制限 → インデックスファイルの順に確認
- 開発側:レスポンスの本文を読む。APIキーの権限、IAM、認証情報を確認
- SEO:意図しない403は検索結果から外れる原因になる。Search Consoleで定期的に確認





