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