2

我有一个 Apache 2.2 正在运行,我强制使用这个 .htaccess 片段下载一些文件:

<Files *.*>
        ForceType application/octet-stream
        Header set Content-Disposition attachment
</Files>

所有受影响的文件都在一个子文件夹中,所以到目前为止效果很好。不幸的是,现在事实证明这有时会导致问题(例如,jplayer 不喜欢那样)。我现在需要有选择地使用默认行为,或强制下载这些文件。

我想必须以某种方式选择带有 URL 参数的行为,以便

http://example.com/files/music.mp3

会导致正常行为(即可以播放 MP3 的浏览器会这样做,而 jplayer 不会抱怨),并且

http://example.com/files/music.mp3?download=1

会强制下载。但是我不知道如何根据参数的存在有选择地使用 ForceType。我知道使用一些 PHP 很容易实现,但如果可能的话,我想避免这种情况。

谢谢你的帮助!

4

2 回答 2

1

一种相当有效的方法是创建另一个文件夹,称为 /download/,其中包含您的 htaccess 片段,并使用此添加的重写规则将所有 /download/ 文件请求重定向到 /file/ 文件夹.htaccess

RewriteEngine on
RewriteRule ^(.*)$ files/$1 [L] 

这样,出于分析/日志的目的,您可以使用良好的语义单独识别下载,并通常调用您的 /files/ 用于 html 嵌入使用,而 /files/ 请求不会有任何 .htaccess 性能下降,这不会受到 .htaccess 的影响从 /download/ 文件夹。

于 2013-04-22T09:02:55.907 回答
1

这里已经回答了一个类似的问题:

https://stackoverflow.com/a/7446204/2291963

读取 QueryString,并将其设置为您决定使用的任何文件扩展名。

于 2013-04-22T10:36:19.080 回答