允许仅访问.htaccess中的特定路径

时间:2015-10-08 08:07:49

标签: regex apache .htaccess mod-rewrite

我的.htaccess文件中有以下内容:

<Files *.php>
    Order Allow,Deny
    Deny from all
</Files>

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

上面的代码是限制只访问index.php文件。但是,问题是如果子目录下有另一个index.php文件,那么也允许执行该index.php文件。这不是我想要的。我想要这样的东西:

<Files /home/user/public_html/index.php>
    Order Allow,Deny
    Allow from all
</Files>

<Files /home/user/public_html/admin/index.php>
    Order Allow,Deny
    Allow from all
</Files>

(我只想要执行2个index.php文件)

但是上面的工作没有用,因为它会拒绝执行应该允许的index.php(同样,应该允许两个,一个在根目录下网站,另一个在管理文件夹下)。

有没有人有关于如何做到这一点的任何提示?

1 个答案:

答案 0 :(得分:2)

使用带有正则表达式支持的mod_rewrite规则仅允许/index.php/admin/index.php

RewriteEngine On

RewriteRule ^(?!(admin/)?index\.php$).+?\.php$ - [F,NC]

FilesFilesMatch不适用于路径,但适用于单个文件名。