2012-08-14 54 views
0

我有一个网站,我想禁用文件执行的某些扩展名仅用于该文件夹。禁用文件夹内的文件执行.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文件放在里面,因为此文件夹会定期清除。

回答

3

您只需将.htaccess文件放入该特定的缓存文件夹中即可。

.htaccess文件提供了一种方法,使在每个目录配置更改。

Apache HTTP Server Tutorial: .htaccess files

配售该规则在.htaccess文件在您网站的根将使你的整个网站的规则。


如果你想要这个规则必须从缓存文件夹以外的启用,你可能想尝试在主.htaccess文件这一规则 -

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

规则测试,看看所请求的文件的

  • URL与cache/
  • 包含任何列出的文件扩展名的开始(用分离管道字符)

如果这些条件都满足时,它传递的是调用脚本access_denied.php在那里你可以显示相应的错误信息。

+0

但是当我清理该文件也被删除缓存文件夹 是有任何其他的规则可以禁用这种执行 – 2012-08-14 10:11:14

+0

看到我的更新... – Lix 2012-08-14 10:20:28

4

尝试加入这行来你根.htaccess文件:

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

该标志将导致显示403 Forbidden错误

+2

这一个运作平平。但请确保将它放在RewriteCond%{REQUEST_FILENAME}!-d和RewriteCond%{REQUEST_FILENAME}!-f之前,否则现有文件仍将被执行 – Swayok 2013-09-06 13:37:30

相关问题