允许 Apache 子目录

允许 Apache 子目录

我觉得这是一个相当简单的修复方法,在搜索时也看到过类似的问题,但无法用这些解决方案修复它。基本上,问题是我无法访问我的网络服务器上的任何子目录。转到 localhost 可以正常显示索引。但转到 localhost/test 会出现 403 Forbidden 错误。

我正在运行 CentOS。我尝试过几种方法编辑 /etc/httpd/conf/httpd.conf 文件,但都没有成功。DocumentRoot 位于 /var/www/html。目前我有:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

我尝试添加以下内容:

<Directory "/var/www/html/test">
    Order allow,deny
    Allow from all
</Directory>

但它仍然给我 403 禁止错误。

答案1

您不需要特别允许访问已在 httpd.conf 中配置的目录

由于 /var/www/html 配置了“AllowOverride None”,因此问题不是由于 .htaccess 文件改变了访问权限。

剩下的唯一原因是文件和目录的权限不允许 Web 服务器 uid 从此目录读取。它们是什么以及应该是什么取决于您的安全模型。但作为快速修复,您可以尝试:

# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*

如果这解决了问题,那么请花时间将文件的所有权和权限修复为更合适的内容。

答案2

通常我建议先查看 http error_log 以查看具体的问题。

使用默认配置您应该能够访问 workshop-5.4 目录:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

如果您仍然无法访问目录,那么一切都指向目录权限,在这种情况下我建议尝试:

chown -R apache.apache /var/www/html  # Assuming apache as default User
chmod -R 755 /var/www/html            # Making sure all users can read and execute

在单独的终端上运行以下命令:

apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log     # Assuming default error_log location

尝试添加一个简单的 html 文件,如(example.html):

<html>
<head><body>It works!</body></head>
</html>

最后,重新加载页面,尝试加载 example.html 并查看输出尾巴命令。

答案3

注释这些<Directory>指令并简单设置DocumentRoot /var/www/htmlchown -R apache:apache /var/www/html重新启动httpd

<Directory>指令应用于将一组指令应用于特定的文件系统目录(即更改权限),因此您通常希望在中使用它<VirtualHost>

答案4

还有一种情况,评论中提到目录被复制了,其中包含文件。

那里可能有一个 .htaccess 文件,其配置导致了 403。

在 Unix 中,名称以点“.”开头的文件是隐藏的,以显示它们的用途ls -a

文档在这里:https://httpd.apache.org/docs/current/howto/htaccess.html

相关内容