htaccess <directory>拒绝所有</directory>

时间:2011-12-30 19:59:27

标签: apache .htaccess apache2

我最近一直在清理我的项目。我在根目录中有一个主要的.htaccess和另外6个。其中5个运行Options -Indexes我没有看到任何允许任何目录查看的点,所以将其移动到主要目录。所以现在我只有2个.htaccess文件。持有<{p}的/system中的主要和一个

# Block External Access
deny from all

所以我想只在主要内部/system上运行它。所以我删除了/ system中的那个并添加了

 # Block External Access
<Directory "/system/">
deny from all
</Directory>

到我的主.htaccess文件离开1!

但现在我得到了

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

请联系服务器管理员,网站管理员@ localhost和   告诉他们错误发生的时间,以及你可能做的任何事情   已经完成可能导致错误。

     

有关此错误的详细信息可能在服务器错误中可用   日志中。

     

10.0.1.5端口80的Apache / 2.2.17(Ubuntu)服务器

目标是阻止读取/ system及其子目录中的任何文件,但允许查看整个项目的一个.htaccess文件中的所有其他文件。关于我如何解决这个问题的任何想法?我做了一些谷歌搜索,但实际上没有任何结果。

3 个答案:

答案 0 :(得分:81)

您无法在.htaccess中使用Directory directive。但是,如果在/ system目录中创建.htaccess文件并将其中包含在其中,则会得到相同的结果

#place this in /system/.htaccess as you had before
deny from all

答案 1 :(得分:11)

您还可以使用RedirectMatch指令拒绝访问文件夹。

要拒绝访问文件夹,您可以在htaccess中使用以下RedirectMatch:

 RedirectMatch 403 ^/folder/?$

这将禁止外部访问/ folder / eg:http://example.com/folder/将返回403禁止错误。

要拒绝访问文件夹中的所有内容,您可以使用:

RedirectMatch 403 ^/folder/.*$

这将阻止访问整个文件夹,例如:http://example.com/folder/anyURI将向客户端返回403错误响应。

答案 2 :(得分:1)

您可以在根目录中使用:

RewriteEngine On
RewriteRule ^(?:system)\b.* /403.html

或者:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden');