我的目标是拒绝访问某些子目录。我的本地主机配置允许像这样覆盖:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
我在 /var/www/ 中还有一个 .htaccess 文件,其内容为:
<Directory /var/www/*>
Order allow,deny
allow from all
</Directory>
上述规则规定每个人都可以访问,但我的服务器响应内部错误。“cat /var/log/apache2/error.log | tail -n 10”给出:
[Thu Feb 23 12:41:09 2012] [alert] [client 127.0.0.1] /var/www/.htaccess: <Directory not allowed here"
为什么会这样?任何有关此问题的详尽指南的链接也非常感谢。谢谢。
答案1
错误消息非常清楚。您必须删除
<Directory> and </Directory>
来自您的 .htaccess 文件。.htaccess
将自动应用于您将其放入的目录,因此无需<Directory>
在您的 中引用指令.htaccess
。最重要的是,apache 文档明确提到<Directory>
指令具有服务器配置和虚拟主机范围(http://httpd.apache.org/docs/2.0/mod/core.html#directory)——意味着你只能将它们放入httpd.conf
(即主配置)和<VirtualHost>
指令中