如何允许访问某些文件类型但拒绝所有其他文件类型

时间:2016-11-25 17:56:44

标签: .htaccess

虽然我有信心在某处提问并回答,但我的Google和SO搜索并没有帮助我解决看起来相当简单的问题。

目标:
拒绝访问所有文件类型图像。

当前.htaccess文件:

<Files *.*>
  Order Deny,Allow
  Deny from all
</Files> 
<FilesMatch "\.(jpg|png|gif|jpeg|JPG|PNG|GIF|JPEG)$">
  Order Deny,Allow
  Allow from all
</FilesMatch> 

我仍然无法(通过浏览器)访问任何图像文件,并显示“403 Forbidden”错误。

问题:
1.如何在没有重写规则的情况下正常工作? 2.我可以合并FilesFilesMatch这样的规则吗? 3. FilesMatch规则是否区分大小写?

1 个答案:

答案 0 :(得分:1)

您可以通过mod_rewrite规则轻松实现此目标:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule !\.(jpe?g|png|gif)$ - [NC,F]

使用FilesMatch你可以这样做:

Order deny,allow

# first deny all files
<Files *>
deny from all
</Files>

# then allow all image files
<FilesMatch "(?i)\.(jpe?g|png|gif)$">
  allow from all
</FilesMatch>