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


Disable a file execution inside a folder .htaccess rule

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

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文件放入其中,因为此文件夹会定期清除。

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

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

该标志将导致显示 403 禁止错误

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

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

Apache HTTP 服务器教程:.htaccess 文件

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


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

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

该规则将测试所请求的文件是否

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

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