2

在我的(drupal)网站上,我有一个可以查看/下载的 pdf。

http://www.mysite.de/assets/thefile.pdf

Firefox 还能够在浏览器中查看 pdf,而不是下载它。问题是 pdf 查看器非常糟糕,至少对于我们的 <win7 用户来说是这样。

我对 .htaccess 不太熟悉,但我想可以设置一个文件头来告诉浏览器下载文件。但是如何根据用户代理有条件地做到这一点?

据我所知,目标用户代理是/.*(windows nt 5\.1).*(firefox).*/i(可能是 win xp 和更低版本的 firefox)。

编辑:我知道我可以像这样强制下载文件:

<FilesMatch "\.(?i:doc|odf|pdf|rtf|txt)$">
  Header set Content-Disposition attachment
</FilesMatch>

但不是如何添加另一个条件,即用户代理。

4

1 回答 1

3

如果您想强制下载特定文件扩展名,最简单的方法是使用AddType,它是一个mod_mime指令。
对于 pdf,您可以将此行添加到您的.htaccess文件中:

AddType application/octet-stream .pdf

关键是octet-stream,这是强制下载的人(并且在浏览器的下载弹出窗口中不允许“打开...”项目)。


希望这可以帮助!


编辑(提问者在评论中的要求)
当我要走的时候,我尽量提供尽可能多的细节。
如果您要添加用户代理“预防”,则需要以下几行:

RewriteCond %{HTTP_USER_AGENT} ^UserAgentNameHere [OR]
(...more user agents...then last one:....)
RewriteCond %{HTTP_USER_AGENT} ^AnotherUserAgentsName
RewriteRule ^.* - [F,L]

如果您的意思是“仅针对不同的浏览器强制下载”,您需要 Apache Server v2.4,因为您需要对Expressions的支持。在这种情况下,您可以这样做:

<If "%{HTTP_USER_AGENT} == '.*MSIE.*'">
    AddType application/octet-stream .pdf
</If>

如果您的意思是别的,请说明(如果您可以发布另一个问题而不是更新/更改/评论这个与其他问题相关的问题,那就太好了)

于 2013-06-24T11:12:01.980 回答