如果用户代理是特定类型,则使用htaccess仅允许下载文件

时间:2011-08-25 22:45:55

标签: .htaccess user-agent

我有一个包含一些zip文件的文件夹。我想拒绝所有直接下载它们的请求,除非用户代理是我指定的类型(例如,user-agent:myuseragent

.htaccess文件怎么可能?

被拒绝的请求将重定向到索引文件,而接受的请求将下载该文件。

例如。如果用户尝试http://download.com/files/myfile.zip他们会被拒绝,但如果使用'myuseragent'的用户访问相同的网址,则会下载该文件

据我所知,使用者可能会被欺骗。这是免费提供文件的温和保护

1 个答案:

答案 0 :(得分:2)

在这里你可以使用 .htaccess和mod_rewrite 来做到这一点:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ - [F,L]

如果用户代理不等于/files/,上述规则将指示Apache为myuseragent文件夹中的任何文件发出403 Access Denied响应。

如果您要发出404 File Not Found响应,请将[F,L]替换为[R=404,L]

如果要将此类失败请求重定向到主页,请使用此规则(您可以将重定向从302更改为您喜欢的任何其他重定向代码):

RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ / [R=302,L]