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

Ric*_*ing 1 .htaccess

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

<a href="/path/to/pdfs/pdf.pdf?view=download">FileName</a>
Run Code Online (Sandbox Code Playgroud)

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

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

<Files *.pdf>
    ForceType applicaton/octet-stream
</Files>
Run Code Online (Sandbox Code Playgroud)

Laz*_*One 7

你可以用mod_rewrite做这样的事情:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^view=download$
RewriteRule .*\.pdf$ - [L,T=applicaton/octet-stream]
Run Code Online (Sandbox Code Playgroud)

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_t

PS 根据您的重写逻辑(如果有的话),您可能需要删除该L,标志.

上述规则适用于以.pdf结尾且具有view=download完全查询字符串的URL .这意味着它将起作用example.com/some/file/here/hello.pdf?view=download但不起作用example.com/some/file/here/hello.pdf?view=download&var1=param1.为了让它适用于这种情况,你必须相应地调整规则(但考虑到你在问题中提供的URL示例,它不应该发生).