更改链接文件的http-header而不使用显式下载脚本(在自己的文件中)

时间:2012-04-09 22:36:38

标签: php apache http http-headers

我想强制浏览器下载在RSS-Feed中链接的所有文件,这是由php脚本创建的。

因此我需要更改这些文件的HTTP标头并设置

header("Content-Disposition: attachment; filename=$file");

(也许还有其他一些变化)。

目前我尝试使用下载脚本来设置这些参数。

然而,这种方法的缺点是,我必须链接到“download.php”而不是“target.file”,这对用户来说有点误导。此外,我必须向用户显示内部文件路径,或者使用相当多的GET变量。

如果可以更改生成RSS-Feed的脚本中的HTTP标头,那会好得多。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

您无法更改RSS Feed内的标题。但是,您可以使用一些重写魔法隐藏download.php部分:

RewriteEngine on
RewriteRule ^download/.*$ /download.php?file=$1 [L]

这会导致以/download/开头的任何网址通过您的下载脚本运行:

  • /img/foo.jpg - 普通文件
  • /download/img/foo.jpg - 强行下载

你也可以在没有PHP的情况下做类似的事情:

RewriteEngine on
RewriteRule ^download/.*$ /$1 [L]

<Location /download>
    Header add Content-Disposition "attachment"
</Location>