【问题标题】:htaccess: alternative to using <if>?htaccess:使用 <if> 的替代方法?
【发布时间】:2014-05-15 00:10:06
【问题描述】:

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

<If "%{QUERY_STRING} =~ /download/">
Header set Content-Disposition attachment
</If>

然后我提供了一个类似http://www.example.com/images/image123.jpeg?download=true 的链接,该链接适用于我的生产服务器。但它给了我一个error 500 在我办公桌上的Mac 开发系统上,使用OS/X 的apache 或MAMP。 Apache 抱怨它不理解 &lt;If&gt; 声明,而 serverFault 告诉我 Apache 2.2 不理解。 OS/X 和 MAMP 都提供 Apache 2.2。

请问有什么方法可以重写&lt;if&gt; 语句以在 Apache 2.2 中产生相同的效果吗?

我不能只使用

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

因为它在 IE11 或 Safari 中都不起作用。

【问题讨论】:

  • 使用服务器端编程语言。喜欢 PHP
  • 我最初成功地使用 PHP 提供了这个,但现在图像大小达到数百兆字节。 PHP 进程因运行时间过长而被托管服务强制终止。我无法延长允许的运行时间。

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

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

RewriteEngine On

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

然后在有条件地中使用这个环境变量来设置你的标题:

Header set Content-Disposition attachment env=DL

【讨论】:

  • 这看起来很有希望,它似乎确实有效。现在,如果我能理解语法就好了……!在这里给我几分钟。
  • 是的,在我阅读了足够多的 Apache 文档以理解您在说什么之后,这确实有效。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-04-21
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多