在没有显式下载脚本的情况下更改链接文件的 http 标头(在自己的文件中)


Change http-header of linked files without explicit download script (in an own file)

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

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

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

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

目前,我尝试使用设置这些参数的下载脚本来执行此操作。

但是,这种方法的缺点是,我必须链接到"download.php"而不是"target.file",这在某种程度上会误导用户。此外,我必须向用户透露内部文件路径或使用相当多的 GET 变量。

如果可以更改生成RSS源的脚本中的HTTP标头,那就更好了。有没有办法实现这一目标?

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

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

这将导致任何以 /download/ 开头的 URL 通过下载脚本运行:

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

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

RewriteEngine on
RewriteRule ^download/.*$ /$1 [L]
<Location /download>
    Header add Content-Disposition "attachment"
</Location>