内部服务器错误,是什么阻止了 htaccess 文件允许索引目录

内部服务器错误,是什么阻止了 htaccess 文件允许索引目录

第一次编写 .htaccess,所以...

我尝试允许索引目录,然后为特定目录添加密码。为此,我正在编写一个 .htaccess 文件。

我正在使用的服务器拒绝索引目录(我认为),但本身并不拒绝使用 .htaccess 文件。我之所以这么说,是因为在我想允许索引的目录中的 htaccess 文件中添加以下几行时,它不会返回内部错误:

<Files index.html>
Order allow,deny
Allow from all
</Files>

当我使用以下内容时确实出现内部错误:

<Files index.html>
Order allow,deny
Allow from all
</Files>

<Directory>
Order allow,deny
Deny from all
</Directory>

我使用上述内容,因为它们是非常简单语句,我只是检查.htaccess 文件是否有效。

我推测这与服务器上某个配置文件中的拒绝有关。我检查了 apache2.conf,修改它似乎没有多大作用。也许我修改错了,但是……我还认为这可能与 000-default 文件 (/etc/apache2/sites-enabled/) 有关,因为该文件规定如下:

ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride Limit
    Order allow,deny
    allow from all
</Directory>

我推测它必须变成 +Indexes。但文件 000-default 是一个符号链接,我不知道它链接到哪里以及可以在哪里找到该文件。或者我不应该触碰这个并添加一个链接到目录的新文件...

答案1

根据文档:<Directory>不能在 htaccess 中使用语境

当您将Options IndexesDirectoryIndex index.html放入 .htaccess 中时会发生什么?


目录中 .htaccess 文件的使用(以及它们允许包含的内容)必须在主apache2.conf配置文件中配置(或在配置文件中配置)包括)如文档中所述允许覆盖

我的 Apache 配置文件有

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

适用AllowOverride None于 的所有子目录/。稍后应该有这个

<Directory /var/www>
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

这强化了主文档根目录及其所有子目录的规则。


文件名.htaccess是默认的,但可以使用访问文件名指令apache2.conf,所以我将检查该指令是否存在。


当你编辑时,apache2.conf你应该要求正在运行的 Apache 服务重新加载其配置。一种方法是

apache2ctl configtest

如果 Apache 说你的配置没问题,就让它不停地加载

apache2ctl graceful

相关内容