我有一个PDF部分,我想让用户可以选择在浏览器中查看文件,或将其下载到他们的计算机上。我不想复制文件,所以我们想到了使用查询字符串告诉服务器文件要下载的强制,例如
<a href="/path/to/pdfs/pdf.pdf?view=download">FileName</a>
在pdfs文件夹的.htaccess文件中,如果查询字符串存在,我需要强制下载文件?
我现在所拥有的每个pdf都会强制下载(而不是查看):
<Files *.pdf>
ForceType applicaton/octet-stream
</Files>
答案 0 :(得分:7)
您可以使用 mod_rewrite :
执行此类操作RewriteEngine On
RewriteCond %{QUERY_STRING} ^view=download$
RewriteRule .*\.pdf$ - [L,T=applicaton/octet-stream]
http://httpd.apache.org/docs/current/rewrite/flags.html#flag_t
<强> P.S。强>
根据您的重写逻辑(如果有的话),您可能需要删除L,
标志。
以上规则适用于以.pdf结尾并且view=download
为查询字符串的网址。这意味着它适用于example.com/some/file/here/hello.pdf?view=download
,但不适用于example.com/some/file/here/hello.pdf?view=download&var1=param1
。为了让它适用于这种情况,你必须相应地调整规则(但考虑到你在问题中提供的URL示例,它不应该发生)。