Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 如果用户代理是特定类型,则使用htaccess仅允许下载文件_.htaccess_User Agent - Fatal编程技术网

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

.htaccess 如果用户代理是特定类型,则使用htaccess仅允许下载文件,.htaccess,user-agent,.htaccess,User Agent,我有一个文件夹,里面有一些zip文件。我想拒绝所有直接下载它们的请求,除非用户代理属于我指定的类型(例如,用户代理:myuseragent) 如何使用.htaccess文件实现这一点 拒绝的请求将重定向到索引文件,而接受的请求将下载该文件 例如,如果用户尝试,他们将被拒绝,但如果一个useragent为“myuseragent”的脚本访问相同的url,它将下载该文件 我知道用户代理可以被欺骗。这只是对免费提供文件的轻微保护这里介绍了如何使用.htaccess和mod_rewrite来实现这一点:

我有一个文件夹,里面有一些zip文件。我想拒绝所有直接下载它们的请求,除非用户代理属于我指定的类型(例如,用户代理:
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]