我正在摆弄虚拟主机,现在当我尝试访问 webroot 上的文件时出现 403 错误。
这是我的httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName test.ts
DocumentRoot /var/www/htdocs/vhost_test
<Directory /var/www/htdocs/vhost_test>
Options Indexes FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我很确定这是 vhosts 的问题,因为我注释掉了 httpd.conf 中包含 httpd-vhosts.conf 的行,问题就消失了。这到底是哪里出了问题?
编辑:Phil Hollenback 帮我解决这个问题后的第二天,服务器又开始出现问题。问题和以前一样,我之前所做的方法这次没有解决。所以我尝试用这个更改 httpd-vhosts.conf:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
<Directory /> #added this tag
Allow from all
<Directory>
</VirtualHost>
现在它开始发挥作用了。
答案1
在您的其他 conf 文件(如 httpd.conf)中查找 DocumentRoot - 它是否在您的虚拟主机之外的任何地方定义?从您的问题和后续问题来看,尚不清楚您的默认 DocumentRoot 是否实际上位于 /var/www 中。您可以让不同的 DocumentRoot 指向完全不同的目录树(不是 /var/www)- 在这种情况下,更改 /var/www 上的权限不会影响任何内容。
另外,当您说“访问 webroot 上的文件”时,您到底是什么意思?您如何访问这些文件?
答案2
你做了什么
Chown -R www-data:www-data /var/www
确保运行 apache 的用户有权访问 /var/www
希望有所帮助,RayQuang
答案3
您是否在任何地方定义了默认文档?如果缺少该文档或该文档不包含您用作默认文档的文件名,通常会返回 403。