.htaccess用于在查询字符串匹配时下载文件

时间:2011-09-15 10:42:47

标签: .htaccess

我有一个PDF部分,我想让用户可以选择在浏览器中查看文件,或将其下载到他们的计算机上。我不想复制文件,所以我们想到了使用查询字符串告诉服务器文件要下载的强制,例如

<a href="/path/to/pdfs/pdf.pdf?view=download">FileName</a>

在pdfs文件夹的.htaccess文件中,如果查询字符串存在,我需要强制下载文件?

我现在所拥有的每个pdf都会强制下载(而不是查看):

<Files *.pdf>
    ForceType applicaton/octet-stream
</Files>

1 个答案:

答案 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示例,它不应该发生)。