.htaccess <files>将我锁定在子目录</files>之外

时间:2014-07-01 16:03:13

标签: php apache .htaccess

我的服务器上的.htaccess文件中有以下内容:

<Files index.php>
Order Deny,Allow
Deny from All
Allow from 80.168.22.149
</Files>

.htaccess位于www.example.com/subdir/.htaccess

的子目录中

index.php文件位于的同一子目录中。

如果我尝试从另一个IP访问该页面,则会出现常见错误:

Forbidden

You do not have permission to access this document.

但是,当我尝试访问/subdir/images等子目录时,我得到了同样的错误。 如果我尝试从允许的OR禁止的IP地址进行访问,则会出现此错误。我认为<Files>限制只会禁止访问指定的文件?

我需要成为唯一可以访问index.php的IP地址,但我需要能够链接到/subdir/中的子目录并让任何人查看它们。

2 个答案:

答案 0 :(得分:0)

而不是<Files>指令,您可以在/subdir/.htaccess中使用此重写规则:

RewriteEngine On
RewriteBase /subdir/

RewriteCond %{REMOTE_HOST} !=80.168.22.149
RewriteRule ^index\.php$ - [F,NC]

答案 1 :(得分:0)

<Files>指令的问题在于它匹配每个index.php,包括子目录中的index.php个文件。

唯一的解决方法是使用<Location>指令,但是您无法在.htaccess文件中使用它。

您需要编辑Apache配置文件,并在域<Location>指令内添加<VirtualHost>指令