尝试访问 webroot 时出现 403 错误

尝试访问 webroot 时出现 403 错误

我正在摆弄虚拟主机,现在当我尝试访问 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。

相关内容