在 CentOS + Apache 下设置 403 Forbidden 错误页,常见做法有几种,下面按最常用、最规范的方式给你说明(适用于 CentOS 7/8、Rocky、Alma 等,Apache 2.4)。
例如:
/var/www/html/403.html
内容示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>403 Forbidden</title>
</head>
<body>
<h1>403 禁止访问</h1>
<p>你没有权限访问该页面。</p>
</body>
</html>
确保文件可读:
chmod 644 /var/www/html/403.html
编辑你的虚拟主机配置文件,例如:
/etc/httpd/conf.d/your-site.conf
添加或修改:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
ErrorDocument 403 /403.html
<Directory /var/www/html>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
/403.html是相对于DocumentRoot的路径
编辑:
/etc/httpd/conf/httpd.conf
添加:
ErrorDocument 403 /403.html
⚠️ 不推荐全局设置,容易影响所有站点。
例如:
chmod 000 /var/www/html/test
访问:
http://服务器IP/test
原因:
解决:
chmod 644 /var/www/html/403.html
chown apache:apache /var/www/html/403.html
检查:
httpd -S
apachectl configtest
确认:
.htaccess 覆盖如果 SELinux 开启,可能阻止访问:
查看状态:
getenforce
临时关闭测试:
setenforce 0
永久解决(推荐):
semanage fcontext -a -t httpd_sys_content_t "/var/www/html/403.html"
restorecon -v /var/www/html/403.html
如果站点允许 .htaccess:
ErrorDocument 403 /403.html
✅ 推荐做法
ErrorDocument 403 /403.html
放在 虚拟主机配置 中,并确保:
如果你愿意,可以告诉我:
我可以给你完全对应你环境的配置示例 ✅