我有一个mp3文件目录,希望能够内联服务或根据请求URI为用户提供下载选项。
/media/file1.mp3 - 在这种情况下,我只想提供文件并让浏览器播放它。
/media/download/file1.mp3 - 在这种情况下,我想让用户轻松下载文件。
我已经能够使用mod_rewrite和php(使用header()和readfile()函数)完成此操作但是我宁愿用mod_rewrite,mod_header等完成所有操作。
答案 0 :(得分:5)
IfDefine 将检查在启动Apache时设置的变量,这样就无法工作了。有效的配置是:
SetEnvIf Request_URI ^/media/download/ force-download
Header set Content-Disposition attachment env=force-download
也无需更改内容类型以强制下载。
答案 1 :(得分:2)
使用mod_rewrite,您只能更改某些特定的标题字段,但 Content-Disposition 标题字段不属于该字段。您只能更改 Content-Type 标题字段:
RewriteRule ^media/[^/]+\.mp3$ - [L,T=audio/mpeg]
RewriteRule ^media/download/[^/]+$ - [L,T=application/octet-stream]
如果您想使用mod_headers + mod_setenvif解决方案:
SetEnvIf Request_URI ^/media/download/ force-download
<IfDefine force-download>
Header set Content-Disposition attachment
Header set Content-Type application/octet-stream
</IfDefine>