htaccess <Directory>拒绝所有

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

 # Block External Access deny from all 

所以我想只在主内部运行/system 。 所以我删除了/系统中的一个,并添加了

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

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

但现在我得到了

内部服务器错误

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

请联系服务器pipe理员webmaster @ localhost,并告知他们错误发生的时间,以及您可能已经犯的错误。

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

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

目标是阻止读取/系统中的任何文件,它是子目录,但允许从整个项目的一个.htaccess文件中查看所有其他内容。 任何想法如何我可以解决这个问题? 我做了一些谷歌search,但不能真正出来。

您不能在.htaccess中使用Directory指令 。 但是,如果您在/ system目录中创build.htaccess文件,并在其中放置以下内容,则会得到相同的结果

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

您也可以使用RedirectMatch指令来拒绝对文件夹的访问。

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

  RedirectMatch 403 ^/folder/?$ 

这将禁止外部访问/文件夹/例如: http : //example.com/folder/将返回一个403禁止的错误。

要拒绝访问文件夹内的所有内容,可以使用以下命令:

 RedirectMatch 403 ^/folder/.*$ 

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

你可以使用从根目录:

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

要么:

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