2011-02-13 93 views
2

我的谷歌福失败了我就这一个...限制文件类型访问目录

我试图创建一个Apache的配置,将只允许访问图像,JS和CSS文件在特定的目录中。

例如,下面的URL应该工作:

mysite.com/dir/image.gif

但是这应该被阻止:

mysite.com/dir/page.php

我正在努力的部分是让它只为/ dir /工作。/dir /之外的其他目录不应受此指令影响。

这是我到目前为止,这不是我所需要的(它似乎适用于所有目录)。

<FilesMatch "\.(gif|jpe?g|jpg|png|js|css)$"> 
    Order deny,allow 
    Allow from all 
</FilesMatch> 

如何仅允许访问/ dir /中的某些文件类型,但不影响我的其余目录?

回答

2

为简单起见,我这样做的时候,我通常把所有的媒体文件,在自己的目录。但是,如果这不是一个选项,您可以尝试FilesMatch指令:

http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch

你可以把FilesMatch的目录里面。

+0

你的意思是这样的吗?它似乎并不奏效:<目录/ DIR> 订单拒绝,允许 所有 允许为了否认,允许 所有 – Fook 2011-02-13 16:40:19

0

我通常使用mod_rewrite为

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} ^/my_dir/[^/]+\.php$ 
RewriteRule .* - [F] 
4

我最近使用这个:

Options -ExecCGI -Indexes 
<FilesMatch "\.*$"> 
deny from all 
</FilesMatch> 
<FilesMatch "\.(png|jpg|gif|css)$"> 
allow from all 
</FilesMatch> 

我找不到这个明确的文档,但对于FilesMatch看来Apache不短路,在第一场比赛。它处理整个.htaccess规则。

因此,第一条规则阻止访问所有文件类型,第二条规则允许选择的类型。

可能需要更多的测试,但必须为客户做些事情,这些客户很容易实现它们的开发人员正在努力解决的Web漏洞。