![如何在 apache 中发送文件的 Content-Disposition 标头?](https://linux22.com/image/503102/%E5%A6%82%E4%BD%95%E5%9C%A8%20apache%20%E4%B8%AD%E5%8F%91%E9%80%81%E6%96%87%E4%BB%B6%E7%9A%84%20Content-Disposition%20%E6%A0%87%E5%A4%B4%EF%BC%9F.png)
我有一个文本文件目录,我正在使用 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>