按文件类型限制对目录的访问

时间:2011-02-13 04:31:54

标签: apache

我的Google-fu让我失败了......

我正在尝试创建一个Apache配置,只允许访问特定目录中的image,js和css文件。

例如,以下网址应该有效:

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 /中的某些文件类型,但不影响我的其余目录?

3 个答案:

答案 0 :(得分:4)

我最近用过这个:

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

我找不到关于此的明确文档,但对于FilesMatch,似乎Apache在第一场比赛时没有短路。它处理整个.htaccess规则。

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

可能需要更多的测试,但必须为客户做一些事情,他们很容易实施以处理他们的开发人员正在努力解决的网络漏洞。

答案 1 :(得分:2)

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

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

您可以将FilesMatch放在目录中。

答案 2 :(得分:0)

我通常会使用mod_rewrite

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