第一次编写 .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 Indexes
或DirectoryIndex 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