htaccess:使用<if>?</if>的替代方法

时间:2014-05-14 13:32:11

标签: regex apache .htaccess mod-rewrite

我需要在网页上提供一个按钮,可以选择下载图像文件并将其存储在客户端的文件系统中。我想用Force a file or image to download using .htaccess的方法 并按照the Apache documentation

的风格在我的.htaccess中写道
<If "%{QUERY_STRING} =~ /download/">
Header set Content-Disposition attachment
</If>

然后我提供了像http://www.example.com/images/image123.jpeg?download=true这样的链接,这对我的生产服务器工作正常。但它在我的桌面上使用OS / X的apache或MAMP在我的Mac开发系统上给了error 500。 Apache抱怨它不理解<If>语句,而serverFault告诉我Apache 2.2不理解。 OS / X和MAMP都提供Apache 2.2。

有没有办法可以重写<if>语句以在Apache 2.2中产生相同的效果呢?

我不能使用

<a download="clientFileName.jpg" href="/images/image123.jpeg">Download</a> 

因为它无法在IE11或Safari中使用。

1 个答案:

答案 0 :(得分:2)

您可以先使用重写规则设置env变量:

RewriteEngine On

RewriteCond %{QUERY_STRING} (?:^|&)download=[^&]+ [NC]
RewriteRule ^ - [E=DL:1,L]

然后在有条件设置标题中使用此env变量:

Header set Content-Disposition attachment env=DL