我采取了以下措施:
但是,当我转到包含此.htaccess(localhost / upload /)的文件夹时,我会看到其他文件:
/ upload /
的索引父目录
...列表继续
这有什么问题,我该如何解决?
修改
这就是.htaccess现在的样子:
<Directory />
AllowOverride All
Deny from all
</Directory>
此行已在httpd.conf中取消注释
LoadModule rewrite_module modules/mod_rewrite.so
所有其余部分保持不变并默认。
答案 0 :(得分:3)
如上面评论中所述,您首先需要启用对这些.htaccess
样式文件的解释。在你这样做之前,他们只是被忽略了。
因为apache提供了命令AllowOverride
。将其放在主机配置的<Directory ...>
部分中,该部分定义了您希望应用于您希望解释这些文件的位置的规则。如下所示:
Listen 80
<VirtualHost *:80>
ServerName www.example.org
DocumentRoot "/var/www/documents"
<Directory "/var/www/documents">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
您的.htaccess
样式文件需要该内容:
Order deny,allow
Deny from all
这应该可行,据我所知,我现在自己不尝试。
无论如何,你真的应该开始监视你的http服务器错误日志文件(也在上面的评论中已经写过)。它允许您了解您的设置有什么问题,例如在语法错误的情况下。该日志文件的典型位置类似于/var/log/apache2/error.log
,但它可能会有所不同,具体取决于您的设置。在apache配置中查找CustomLog
命令,该命令定义该日志文件的位置。
我想在此重复我的第二条评论:
您想要考虑是否确实需要使用.htaccess
样式文件。为什么不将命令放在主机配置中呢? .htaccess
样式文件众所周知容易出错且不可靠,它们很难调试并且确实会降低服务器的速度。它们仅适用于那些无法控制主机配置的用户(通常是廉价网络空间提供商的情况)。
通过向主机定义添加另一个.htaccess
命令,您可以在没有任何<Directory ...>
样式文件的情况下获得相同的结果:
Listen 80
<VirtualHost *:80>
ServerName www.example.org
DocumentRoot "/var/www/documents"
<Directory "/var/www/documents">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/documents/protected/area">
AllowOverride All
Order deny,allow
Deny from all
</Directory>
</VirtualHost>