尝试访问网站时出现 403 错误

尝试访问网站时出现 403 错误
Apache/2.4.18 (Ubuntu)
Ubuntu 16.04

这是我的 000-default.conf 文件:

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName myserver.net
   DocumentRoot /home/utils/rails/public
   <Directory /home/utils/rails/public>
      AllowOverride all
      Options -MultiViews
      Require all granted
   </Directory>
   LogLevel warn
   ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
   CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>

/home/utils/rails/public 目录的文件设置设为 0755

我正进入(状态:

Forbidden

You don't have permission to access / on this server.

这是我第一次遇到这种情况。有什么想法吗?

答案1

  • 他已经在答案中修复了目录/* 您自己的解决方案可能是最糟糕的建议。Directory 指令代表文件系统的目录。真正解决您的问题的方法是设置“AllowOverride 无“其中可能有一个恶意的 .htaccess 文件首先更改了您的权限。

将虚拟主机中的目录设置为文档根目录,如果您是管理员,请不要使用 .htaccess,因为如您所见,如果您不完全清楚自己在做什么,它会导致您感到困惑和错误,所以真正的答案是,将目录设置为文档根目录并设置 allowoverride none,控制虚拟主机内的访问,所有这些都集中在一个地方以便于检查。

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName myserver.net
    DocumentRoot "/home/utils/rails/public"
    <Directory "/home/utils/rails/public">
        AllowOverride None
        Require all granted
   </Directory>
   LogLevel warn
   ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
   CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>

如果你想知道在哪里<Directory /> 属于, 它属于 服务器配置或虚拟主机之外的全局配置) 和应设置为要求所有拒绝。否则,您实际上是在向所有人授予整个文件系统的访问权限。

我还删除了 mod_negotation 的 IfModule,因为禁用多视图与没有多视图是一样的,所以使用 Ifmodule mod_negotiation 禁用多视图没有多意义。

答案2

以下内容解决了该问题:

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName myserver.net
    DocumentRoot "/home/utils/rails/public"
    <Directory "/home/utils/rails/public">
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>
        AllowOverride None
        Require all granted
   </Directory>
   LogLevel warn
   ErrorLog ${APACHE_LOG_DIR}/myserver.net_error.log
   CustomLog ${APACHE_LOG_DIR}/myserver.net_access.log combined
</VirtualHost>

关键是:

Require all granted

这是从 Apache 2.4 开始使用的。其他指令不是访问问题的关键,但我用它们来禁止 .htaccess 指令(允许覆盖)并处理多视图

将权限设置为 0755 有效,不需要更改

*修复目录路径未复制的拼写错误

相关内容