禁用文件夹.htaccess规则中的文件执行

时间:2012-08-14 10:08:41

标签: php .htaccess

我有一个网站,我想禁用该文件夹的某些文件执行扩展。

EG:www.yoursite.com/cache/test.php

不应该被执行。

我试过这段代码:

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py|php)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

但这阻止了我的网站功能。

我只是希望将此规则应用于缓存文件夹中,但我无法将.htaccess文件放在里面,因为此文件夹会定期清除。

2 个答案:

答案 0 :(得分:4)

尝试将此行添加到root .htaccess文件中:

RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|phps?|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py)$ - [F]

该标志将显示403 Forbidden Error

答案 1 :(得分:3)

您所要做的就是将.htaccess文件放在该特定缓存文件夹中。

  

.htaccess个文件提供了一种基于每个目录进行配置更改的方法。

Apache HTTP Server Tutorial: .htaccess files

将该规则放在网站根目录的.htaccess文件中,即可在整个网站上启用这些规则。


如果您希望从该缓存文件夹外部启用此规则,您可能需要在主.htaccess文件中尝试此规则 -

RewriteEngine On
RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|...)$ /access_denied.php

规则测试以查看所请求的文件是否为

  • 网址以cache/
  • 开头
  • 包含列出的任何文件扩展名(用竖线字符分隔)

如果满足这些条件,它会将该调用传递给access_denied.php脚本,您可以在其中显示相应的错误消息。