如果存在某个查询字符串,我可以让 Apache 或 IIS 添加一个特定的标头吗?
我希望查询字符串中带有“download=1”的每个 URL 都与Content-Disposition: attachment.
奇怪的问题标题,因为最初这只是关于 Apache,但现在我也添加了 IIS。
mod_rewrite以mod_headers使这成为可能,如下所示:
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)download=1(&|$)
RewriteRule ^(.*?([^/]*))$ $1 [E=DOWNLOAD:$2]
Header set "Content-Disposition" "attachment; filename=\"%{DOWNLOAD}e\"" env=DOWNLOAD
Run Code Online (Sandbox Code Playgroud)
尚未使用任何包含非 ASCII 或空格的内容对此进行测试。那些可能最终会显示在 URL 转义的文件名中,即“%20”等。
编辑:特殊字符应该可以正常工作。
我必须在 IIS 7.5 上做同样的事情,所以这里是这样做的方法:将以下 XML 放入站点的<system.webServer><rewrite> ...部分:
<outboundRules>
<rule name="DownloadAnything">
<match serverVariable="RESPONSE_Content_Disposition" pattern=".*" />
<action type="Rewrite" value="attachment" />
<conditions>
<add input="{QUERY_STRING}" pattern="(^|&)download=1(&|$)" />
</conditions>
</rule>
</outboundRules>
Run Code Online (Sandbox Code Playgroud)
(显然,如果您已经有一个<outboundRules>元素,则只将规则放在现有元素中)
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |