Apache2将子目录设为站点根目录后,其他子目录站点无法访问的问题求助
Apache2将子目录设为站点根目录后,其他子目录站点无法访问的问题求助
嗨,我来帮你梳理下这个问题的原因和解决办法~
问题根源
你把example.com的DocumentRoot设置成了/var/www/html/example/public,这意味着现在Apache处理所有example.com的请求时,都会优先在这个public目录下去找对应的文件。当你访问http://example.com/example2时,Apache会尝试在/var/www/html/example/public/example2里找内容,但这个目录根本不存在,所以就返回了新站点的404错误,而不是去上级的/var/www/html/example2目录查找。
解决方案:使用Alias指令映射真实目录
最直接的解决方法是用Apache的Alias指令,把/example2这个请求路径映射到实际的文件目录/var/www/html/example2。你只需要在当前的VirtualHost配置里添加以下内容:
# 新增Alias配置,映射/example2到真实目录 Alias /example2 /var/www/html/example2 # 给example2目录配置权限 <Directory /var/www/html/example2> AllowOverride All # 如果你用的是Apache 2.2,保留下面两行 Order Allow,Deny Allow from All # 如果你用的是Apache 2.4,注释上面两行,启用下面这行 # Require all granted </Directory>
额外步骤
- 确保Apache的
alias模块已经启用,执行命令:sudo a2enmod alias - 重启Apache服务使配置生效:
sudo systemctl restart apache2
这样配置后,当你访问http://example.com/example2时,Apache就会正确地去/var/www/html/example2目录下读取内容,同时不影响example.com主站点的正常运行。
备注:内容来源于stack exchange,提问作者tulekparson
相关产品推荐
相关产品推荐

