403 Forbidden
Apacheでアクセス権限がない場合に発生するエラー
概要
403 Forbidden は、Apacheがリクエストを理解したが、アクセスを拒否した場合に発生するエラーです。ファイル権限、ディレクトリ設定、.htaccessの制限などが原因です。
エラーメッセージ
ブラウザ:
Forbidden
You don't have permission to access this resource.
Apacheエラーログ:
[error] [client 192.168.1.1] AH01630: client denied by server configuration
[error] [client 192.168.1.1] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex
[error] [client 192.168.1.1] AH00035: access to /secret/ denied
原因
- ファイル/ディレクトリ権限: Apacheユーザーが読み取れない
- Directory設定: Require all deniedなどで制限されている
- DirectoryIndex未設定: ディレクトリにインデックスファイルがない
- .htaccess制限: deny from allなどの設定
- SELinux: セキュリティコンテキストの問題
- Options設定: Indexesが無効でインデックスファイルがない
解決策
1. ファイル権限を確認・修正
| |
2. Apache設定でアクセスを許可
/etc/apache2/sites-available/000-default.conf (Ubuntu):
| |
/etc/httpd/conf/httpd.conf (CentOS):
| |
3. DirectoryIndexを設定
| |
または、ディレクトリ一覧表示を有効化:
| |
4. .htaccessを確認
問題のある.htaccess:
| |
修正版:
| |
5. AllowOverrideを有効化
.htaccessを有効にする:
| |
6. SELinuxの確認と修正
| |
7. mod_rewrite関連の問題
.htaccess:
| |
mod_rewriteを有効化:
| |
8. 特定ファイルへのアクセス制限
| |
9. ログを確認
| |
10. 設定をテスト・再起動
| |
Apache 2.2 から 2.4 への移行
| |
Apache の他のエラー
この記事は役に立ちましたか?