You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Apache/Nginx时根目录访问403禁止错误求助

解决Docker部署Nginx+Apache环境下根目录403禁止访问的问题

让我来帮你搞定这个根目录403的问题,核心原因是根目录的请求没有被正确导向index.php,咱们一步步来调整配置:

1. 给Apache配置默认首页

你的Apache虚拟主机配置里缺少了DirectoryIndex指令,这会导致Apache在访问根目录时不知道该加载哪个默认文件,直接返回403。

修改你的Apache虚拟主机配置,在<Directory>块上方或者全局配置里加上:

DirectoryIndex index.php index.html

这样Apache会优先尝试加载index.php作为根目录的默认页面。

2. 调整Rewrite规则适配根目录请求

你现有的Rewrite规则^([^\.]+)$只能匹配至少包含一个非点字符的路径,而根目录/是空路径,完全不匹配这个规则。所以需要额外添加一条规则处理根目录:

更新你的Rewrite规则(不管是放在虚拟主机配置还是.htaccess里):

RewriteEngine On
# 专门处理根目录请求,转发到index.php
RewriteRule ^$ /index.php [L]
# 原规则:把不带后缀的文件路径转为.php(排除已存在的文件)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

3. 可选:优化Nginx反向代理配置

虽然当前问题不在Nginx,但为了让Apache能正确获取请求信息,你可以给Nginx的location /块添加几个代理头:

location / {
    proxy_pass http://site:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

最后一步:重启容器生效

修改完配置后,分别重启Nginx和Apache容器:

# 重启Nginx容器
docker restart <your-nginx-container-name>
# 重启Apache容器
docker restart <your-apache-container-name>

现在再访问site.com根目录,应该就能正常加载index.php了,其他页面的访问逻辑也不会受影响。

内容的提问来源于stack exchange,提问作者Tuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:34:07