.htaccess 如果用户代理是特定类型,则使用htaccess仅允许下载文件
我有一个文件夹,里面有一些zip文件。我想拒绝所有直接下载它们的请求,除非用户代理属于我指定的类型(例如,用户代理:.htaccess 如果用户代理是特定类型,则使用htaccess仅允许下载文件,.htaccess,user-agent,.htaccess,User Agent,我有一个文件夹,里面有一些zip文件。我想拒绝所有直接下载它们的请求,除非用户代理属于我指定的类型(例如,用户代理:myuseragent) 如何使用.htaccess文件实现这一点 拒绝的请求将重定向到索引文件,而接受的请求将下载该文件 例如,如果用户尝试,他们将被拒绝,但如果一个useragent为“myuseragent”的脚本访问相同的url,它将下载该文件 我知道用户代理可以被欺骗。这只是对免费提供文件的轻微保护这里介绍了如何使用.htaccess和mod_rewrite来实现这一点:
myuseragent
)
如何使用.htaccess文件实现这一点
拒绝的请求将重定向到索引文件,而接受的请求将下载该文件
例如,如果用户尝试,他们将被拒绝,但如果一个useragent为“myuseragent”的脚本访问相同的url,它将下载该文件
我知道用户代理可以被欺骗。这只是对免费提供文件的轻微保护这里介绍了如何使用.htaccess和mod_rewrite来实现这一点:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ - [F,L]
如果用户代理不等于myuseragent
,则上述规则将指示Apache对/files/
文件夹中的任何文件发出403拒绝访问响应
如果要发出404文件未找到响应,请将[F,L]
替换为[R=404,L]
如果要将此类失败的请求重定向到主页,请使用此规则(您可以将重定向从302更改为您喜欢的任何其他重定向代码):
请提供此类下载URL的示例。请注意,可能会伪造
用户代理
。例如,curl-A
和wget-U
这样做。在Safari中,如果启用“开发”菜单,则可以选择自己的用户代理。在Firefox中,使用about:config
。我把它放在名为/files/的文件夹中的.htaccess文件中,它允许从任何用户代理下载任何文件。该规则应该放在网站根文件夹中的.htaccess中。如果放置在/files/.htaccess
中,那么您必须稍微更改一个规则--删除文件/
部分,并放置完整的域名,而不是/
。这还取决于您如何编写用户代理字符串——它是否包含空格,区分大小写?请提供您到底做了什么(以防上述更正无效)。
RewriteCond %{HTTP_USER_AGENT} !=myuseragent
RewriteRule ^files/.*$ / [R=302,L]