.htaccess - htaccess FilesMatch 拒绝但允许特定文件

标签 .htaccess file

我的文件夹中有一个 htaccess 规则,不允许使用 php 脚本:

 <FilesMatch "\.(?i:php)$">
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
</FilesMatch>

效果很好。问题是,我确实希望能够调用(通过ajax)一个特定的php脚本,所以我想在拒绝之后添加另一个规则,即“但如果是这个特定文件,则允许它”。我已经使用该文件所在文件夹中的其他 htaccess 文件成功完成了此操作,如下所示:

<Files ajax_file.php>
    <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
    </IfModule>
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
</Files>

我遇到的问题是我想从与阻止所有 .php 文件的原始 FilesMatch 相同的 htaccess 授予单个文件访问权限。我似乎无法通过添加文件路径来使其工作,并且想知道是否有更好的方法来解决此问题。该文件比拒绝 php 脚本的 htaccess 文件深几个文件夹。

最佳答案

我可以看到这是一篇非常旧的帖子,但是,由于没有标记的答案,我想我会尝试解决这个问题。

您需要的代码应如下所示:

<FilesMatch "\.(?i:php)$">
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>

这会阻止对所有 php 文件的访问,并将优先级设置为允许然后拒绝,以便我们可以稍后覆盖所有拒绝。

然后要允许访问特定的 php 文件,请使用以下命令:

<Files ajax_file.php>
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</Files>

我可以从你的OP中看到这与你自己的没有什么不同,所以我只能假设通过重新添加订单声明你会导致一些奇怪的事情把事情搞砸,因为你已经在中设置了优先级初始的 [block all php] 文件声明。

关于.htaccess - htaccess FilesMatch 拒绝但允许特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34769421/

相关文章:

.htaccess - 如何拒绝访问 .htaccess 中的文件

python - 获取png文件名称的第一个单词和字符

Ajax 上传在表单中使用 valums ajax 上传插件

c++ - 十六进制数组 cout 到文本文件失败

java - 比较目录以检查一个目录是否是另一个目录的子目录

python - 在 python 中以读取模式打开文件时到底发生了什么

apache - .htaccess URL 屏蔽而不是重定向

php - 重写产品名称的网址

.htaccess - 重定向到 HTTP 非 www 到 HTTPS www htaccess

.htaccess - 当某些查询字符串存在时允许访问,否则拒绝