拒绝访问文件,除非定义了特定的查询字符串参数

时间:2016-10-26 17:48:45

标签: regex apache .htaccess

我在包含子文件夹的文件夹中有这个.htaccess文件。我目前已禁用直接访问这些子文件夹中的.zip文件的功能,如下所示:

Options -Indexes
deny from all
<FilesMatch '\.(jpg|jpeg|png|gif|mp3|ogg)$'>
Order Allow,Deny
Allow from all
</FilesMatch>

问题是我只想在查询字符串上有?access=allow时才允许访问这些.zip文件。

我尝试在文件末尾添加以下内容:

RewriteCond %{QUERY_STRING} (?:^|&)(access=allow)(?:&|$) [NC]
RewriteRule ^(.*)$ - [R=404,L,NC]

它根本没有用。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以将此规则用作您的第一条规则

RewriteEngine On

RewriteCond %{THE_REQUEST} \.(jpe?g|png|gif|mp3|ogg)[?\s] [NC]
RewriteRule ^ - [L]

RewriteCond %{QUERY_STRING} (?:^|&)access=allow(?:&|$) [NC]
RewriteRule \.zip$ - [L,NC]

RewriteRule ^ - [F]

答案 1 :(得分:0)

要仅在查询字符串中存在 access = allow perameter时才允许访问.zip文件,您可以使用:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)(access=allow)(?:&|$) [NC]
RewriteRule \.zip - [L]

并禁止访问其他扩展程序,请添加以下规则:

RewriteRule \.(jpeg|gif|zip)$ - [F]