SetEnvIf 正则表达式用于设置 Content-Disposition HTTP 标头

SetEnvIf 正则表达式用于设置 Content-Disposition HTTP 标头

我正在尝试使用 IHS 7.0/apache 2.2 SetEnvIf 指令根据 url 参数设置下载文件的文件名。我认为我已经非常接近了,但是如果文件名中有空格(编码或其他) - 它会失败。

示例网址:

http://site.com/path/to/filename.ext/file-title=Nice File Name.ext?file-type=foo

阿帕奇配置:

SetEnvIf Request_URI "^.*file-title\=(.*)\??.*$" FILENAME=$1
Header unset "Content-Disposition"
Header add "Content-Disposition" "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME

应用程序将指定现在在示例中显示为“Nice File Title.ext”的内容。如果没有空格,这一切都很好,但是 - 如果有空格,要下载的文件名将只显示为“Nice”。查询字符串中可能有或可能没有第二组参数(?file-type 等)

答案1

好的-因此,只需保留正则表达式并更改 Header 添加即可。

filename=\"%{FILENAME}e\""

用引号括起来。叹息。

相关内容