Apache:选项 +Indexes 仍然导致 403 Forbidden 或 Apache Test Page

Apache:选项 +Indexes 仍然导致 403 Forbidden 或 Apache Test Page

在本地开发服务器上,我有一个用于网站的 Apache conf,如下所示

<VirtualHost *:80>
  ServerAdmin no-reply@localhost
  ServerName sandbox.mysite.internal
  DocumentRoot /var/www/vhosts/sandbox/mysite
  ErrorLog logs/sandbox/mysite-error.log
  CustomLog logs/sandbox/mysite-access.log common
</VirtualHost>

如果我访问以下地址(没有index.php或index.html)

http://sandbox.mysite.internal

我得到了 Apache CentOS 测试页面

如果我访问一个子目录,比如

http://sandbox.mysite.internal/test/

我收到403 Forbidden错误。因此我在此处添加以下内容.htaccess

/var/www/vhosts/sandbox/mysite/test/.htaccess

内容:

Options +Indexes

现在当我访问时:

http://sandbox.mysite.internal/test/

我仍然收到 403 Forbidden。

我怎样才能使目录索引显示出来?

我一直认为.htaccess指令会覆盖任何httpd.conf指令。但我错了吗?我的某些设置是否httpd.conf导致我的.htaccess指令被忽略?

答案1

当然,AllowOverride None这会阻止.htaccess文件运行。但是,为什么要使用它们呢?Apache 的推荐.htaccess除非您无法访问主配置,否则永远不要使用。

尝试一下这个:

<VirtualHost *:80>
  ServerAdmin no-reply@localhost
  ServerName sandbox.mysite.internal
  DocumentRoot /var/www/vhosts/sandbox/mysite
  ErrorLog logs/sandbox/mysite-error.log
  CustomLog logs/sandbox/mysite-access.log common
  <Directory /var/www/vhosts/sandbox/mysite/test/>
    Order allow,deny
    Allow from all
    Options +Indexes
  </Directory>
</VirtualHost>

如果这不起作用,请查看 Apache 的错误日志;例如,您的文件/目录权限可能有问题。

答案2

如果您的父目录 .htaccess(或您的 Apache 配置文件 httpd.conf)默认禁止目录访问(应该如此),则您必须在 .htaccess 文件中添加“Require all granted”指令,以便提供目录列表。否则,访问者将看到 403(禁止访问)错误。

为了确保安全,请确保您的目录及其文件允许读取但禁止写入(除非您确实希望用户能够更改或存储服务器上的文件)。此建议假设您的服务器在 Linux 上运行,它具有可见权限功能。Windows 服务器可能需要更高级的安全预防措施。

相关内容