403エラーは「アクセスする権限がない」という意味です。ファイルが存在しないわけではなく、サーバー側が意図的に見せない判断をしています。エックスサーバーで403が出る原因は、WAFの誤検知が圧倒的に多く、次いでアクセス制限の設定、.htaccessの記述ミスと続きます。ここでは切り分けの手順と、それぞれの対処を解説します。管理画面全体の使い方は使い方ピラーをご覧ください。
WordPressの管理画面で急に403が出たら、まずWAFを疑ってください。記事の投稿、プラグインの設定変更、テーマの編集といった操作が、攻撃と誤判定されることがあります。サーバーパネルでWAFを一時的に無効にして操作し、作業後に必ず戻すのが一般的な対処です。
403エラーの主な原因
| 原因 | 症状の特徴 | 頻度 |
|---|---|---|
| WAFの誤検知 | 特定の操作をしたときだけ出る | 高 |
| アクセス制限の設定 | 自分だけ出る、特定の環境だけ出る | 中 |
| .htaccess の記述 | サイト全体または特定のディレクトリで出る | 中 |
| ディレクトリにindexファイルがない | フォルダのURLにアクセスしたとき | 中 |
| パーミッション(権限)の設定 | 特定のファイルだけ出る | 低 |
切り分けの手順
- 1 いつ出るのかを特定する常に出るのか、特定の操作をしたときだけか。特定の操作でだけ出るならWAFの誤検知が濃厚
- 2 誰に出るのかを確認する自分だけか、他の人にも出るか。自分だけならアクセス制限の可能性
- 3 どこで出るのかを確認するサイト全体か、管理画面だけか、特定のページだけか
- 4 直前に何をしたか思い出す.htaccessの編集、プラグインの追加、設定変更。直前の変更が原因のことが多い
- 5 別の回線・端末から確認するスマートフォンのモバイル回線などで開く。表示されるならアクセス元の問題
原因① WAFの誤検知(最多)
WAF(Webアプリケーションファイアウォール)は、不正なアクセスを検知してブロックする保護機能です。エックスサーバーでは標準で有効になっていることが多く、正常な操作を攻撃と誤判定することがあります。
誤検知が起きやすい操作
- WordPressの記事にコードやタグを含めて投稿する
- プラグインの設定を変更する
- テーマファイルを編集する
- 管理画面からファイルをアップロードする
- 問い合わせフォームから特定の内容を送信する
「投稿ボタンを押したら403が出た」「プラグインの設定を保存したら403になった」という場合は、ほぼWAFです。
対処
- 1 サーバーパネルでWAF設定を開くセキュリティのカテゴリにある。対象のドメインを選択する。操作場所はサーバーパネルの使い方を参照
- 2 一時的に無効にする該当する検知項目、または全体を一時的にオフにする
- 3 目的の操作を行う403で止まっていた作業を完了させる
- 4 WAFを元に戻すここを忘れない。無効のまま放置すると保護がない状態になる
WAFを無効にしたまま放置しないでください。不正アクセスからサイトを守る機能です。作業のために一時的に切るのは問題ありませんが、終わったら必ず戻してください。「無効にしたことを忘れる」のがいちばん危険です。作業前にメモを残すか、スマートフォンにリマインダーを設定しておくと確実です。
原因② アクセス制限の設定
自分だけ403が出て、他の人は見られるという場合はこちらです。
確認する設定
| 設定 | 内容 |
|---|---|
| 国外IPアクセス制限 | 国外からのアクセスを遮断する機能 |
| アクセス拒否設定 | 特定のIPアドレスを拒否する設定 |
| ディレクトリアクセス制限 | 特定のフォルダにパスワードをかける設定 |
| .htaccess による制限 | ファイルに直接記述された制限 |
国外IPアクセス制限は、海外のVPNを使っている場合や、海外出張中にアクセスした場合に影響します。管理画面へのアクセスだけを制限する設定もあるため、サイトは見えるが管理画面だけ403、という状況が起こり得ます。
対処
サーバーパネルで該当する制限設定を確認し、必要に応じて自分のIPアドレスを許可するか、制限を一時的に解除してください。
原因③ .htaccess の記述
.htaccessに記述したアクセス制限やリダイレクトの設定が原因になることがあります。
.htaccess を編集した直後に403が出たら、その編集が原因です。編集前のファイルを保存していれば、それに戻すだけで解決します。保存していない場合は、追加した記述を削除して確認してください。
編集はFTPまたはサーバーパネルのファイルマネージャから行います。
WordPressの場合、プラグインが自動的に.htaccessへ記述を追加することがあります。プラグインを入れた直後に403が出たら、そのプラグインを疑ってください。
原因④ indexファイルがない
example.com/folder/ のようにフォルダのURLに直接アクセスしたとき、そのフォルダに index.html や index.php がないと403が返ることがあります。
これはエラーというより、フォルダの中身を一覧表示しないというセキュリティ上の仕様です。
対処は次のいずれかです。
- そのフォルダにindexファイルを置く
- フォルダのURLに直接アクセスしない(ファイル名まで指定する)
原因⑤ パーミッションの設定
ファイルやフォルダの権限(パーミッション)が適切でないと、403になることがあります。
FTPソフトから権限を確認・変更できますが、むやみに変更しないでください。権限を緩めすぎるとセキュリティ上の問題になります。
WordPressを通常どおり設置している場合、この原因になることはあまりありません。手動でファイルをアップロードした場合や、FTPの設定を変更した場合に起こり得ます。
症状別の早見表
| 症状 | 疑うところ | 最初に試すこと |
|---|---|---|
| 記事を投稿したら403 | WAF | WAFを一時的に無効化 |
| プラグイン設定を保存したら403 | WAF | WAFを一時的に無効化 |
| 自分だけ403 | アクセス制限 | 別回線から確認 |
| 海外からアクセスすると403 | 国外IPアクセス制限 | 設定を確認 |
| .htaccess編集後に403 | .htaccess | 編集を元に戻す |
| フォルダのURLで403 | indexファイルがない | 仕様。ファイル名まで指定 |
| サイト全体が突然403 | .htaccess、プラグイン | 直前の変更を戻す |
500エラーとの違い
似たタイミングで出るエラーなので、区別しておいてください。
| 403エラー | 500エラー | |
|---|---|---|
| 意味 | アクセス権限がない | サーバー内部のエラー |
| 主な原因 | WAF、アクセス制限 | .htaccessの構文エラー、PHPのエラー |
| ファイルの状態 | 存在している | 存在しているが処理に失敗 |
500エラーの対処は500エラーの記事にまとめています。
まとめ
403エラーは「アクセスする権限がない」という意味で、ファイルがないわけではありません。エックスサーバーではWAFの誤検知が最も多い原因です。
記事の投稿、プラグインの設定変更、テーマの編集で403が出たら、まずWAFを疑ってください。サーバーパネルで一時的に無効にして操作し、作業後に必ず戻すのが対処になります。無効のまま放置しないでください。
自分だけ403が出る場合はアクセス制限、.htaccessを編集した直後なら記述ミス、フォルダのURLで出るならindexファイルがない、と切り分けられます。
切り分けのポイントは「いつ・誰に・どこで」出るのかと「直前に何をしたか」の2つです。この2つを整理すれば、原因はほぼ絞れます。
サーバーパネルの操作はサーバーパネルの使い方、500エラーは500エラーの記事、反映まわりの問題は反映されないときの記事をご覧ください。