.htaccess拒绝子文件夹中的文件

时间:2012-01-10 10:45:57

标签: php apache .htaccess

我想阻止访问“sub / folder / index.php”,但不能阻止访问“index.php”。

<Files index.php>
    Order allow,deny
    Deny from all
</Files>

可以阻止所有“index.php”文件。

<Files sub/folder/index.php>
    Order allow,deny
    Deny from all
</Files>

不起作用。我需要使用<Directory>吗?

我不想在子/文件夹中创建.htaccess文件

我无法访问httpd.conf

我不想阻止子/目录中的所有内容

如果这很容易,我不会问;)

4 个答案:

答案 0 :(得分:23)

我认为最简单的规则是:

RedirectMatch 403 ^.*/sub/folder/index\.php$

RedirectMatch在mod_alias模块中,你当然有。这并不意味着mod_rewrite引擎。这里我们只是告诉apache对sub / folder / index.php的任何访问都会产生“403禁止”的答案。

你可以把它放在httpd.conf或root .htaccess中(但是真的考虑删除所有的.htaccess,它很糟糕,它很慢,很遗憾你无法访问真实的配置文件)。

答案 1 :(得分:2)

我尝试在该子/文件夹/中创建另一个.htaccess来阻止对该index.php的访问。

“如果将.htaccess文件放在子文件夹中,其指令将覆盖您站点主文件夹中的指令。”

此页面提供了更多信息:http://www.besthostratings.com/articles/htaccess.html

答案 2 :(得分:1)

如何在包含您要保护的文件的特定文件夹中创建.htaccess文件?

修改:

请注意,这实际上不适用于简单的.htaccess文件,请参阅下面的评论。这只能在apache.conf文件中使用。

这应该是没有其他.htaccess文件的诀窍:

<Directory sub/folder>
   <Files index.php>
     Order allow,deny
     Deny from all
   </Files>
</Directory>

答案 3 :(得分:0)

您只能在&lt; Files&gt;中使用文件名部分,而不是路径。

我可以看到三个选项;

  • 将.htaccess文件放在与文件相同的文件夹中。
  • 使用&lt; Directory&gt;将配置放在apache.conf中指令和&lt; Files&gt;指示。 &LT;目录&gt;在.htaccess文件中不起作用,只能在apache.conf
  • 中使用
  • 使用mod_rewrite a'la;
  • 创建重写规则

-

RewriteEngine on
RewriteRule ^sub/folder/index.php$ http://yoursite/index.locked

如果您希望拒绝权限,则会在文件上提供404,在指向的位置创建一个读取受保护的文件。