如何在 apache 中发送文件的 Content-Disposition 标头?

如何在 apache 中发送文件的 Content-Disposition 标头?

我有一个文本文件目录,我正在使用 apache 2 提供服务。通常,当我(或任何用户)访问这些文件时,他们会在浏览器中看到它们。我想“强制”* Web 浏览器弹出“另存为”对话框。我知道这可以通过标题来实现Content-Disposition更多信息)。

是否有某种方法可以为每个文件打开该功能?

理想情况下我想要这样的东西:

<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>

然后 apache 会设置正确的内容处置标头,包括使用相同的文件名。

使用 apacheHeader指令可能会实现类似的效果。

如果它包含在 Debian 中的 apache 中,则可以获得加分。

我可以编写一个简单的 PHP 包装脚本,它接受一个filename参数,调用header(...)该文件然后打印它,但随后我必须验证日期输入等。这是我试图避免的工作。


* 我知道在网络问题上你不能强迫事情发生

答案1

我发现这正是我想要的:

<Location /textfiles>
    SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
    Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
    UnsetEnv FILENAME
</Location>

答案2

mod_headers应该是你正在寻找的:

<IfModule mod_headers.c> 
  <Location ~ ".*/textfiles/.*"> 
    Header set Content-Disposition attachment
  </Location>
</IfModule>

相关内容