从 .htaccess 中访问 $_GET 参数

Access $_GET argument from inside .htaccess

我的服务器上有随机名称的图像(f.e。“8a4f5d61.jpg”),我需要使用给定的 GET 参数更改这些文件的名称。

所以如果我有这样的 URL:

http://my.server/8a4f5d61.jpg?attachement=custom_name.jpg

我希望 Apache 像这样添加 header:

Header Content-Disposition: "attachement, filename=$_GET['attachement']"

因此用户将下载已重命名为 "custom_name.jpg" 的文件。

我不知道如何从 .htaccess 中获取 GET 参数


在 nginx 上非常简单,这是我的工作 nginx 配置:

location ~ ^/.*\.jpg$ {
    if ($arg_inline) {
        add_header Content-Disposition "inline; filename=$arg_inline";
    }
    if ($arg_attachement) {
        add_header Content-Disposition "attachement; filename=$arg_attachement";
    }
}

在 Apache 上使用 .htaccess 可以实现吗?

我没有测试过,但理论上,如果您的查询符合给定条件,则设置一个环境变量,然后使用 mod_headers' Header 指令设置 header:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^attachment=(.+)$ [NC]
RewriteRule ^ - [E=file_name:%1,L]

Header always set Content-Disposition "attachement; filename=%{file_name}e" env=file_name

其中 %{file_name}efile_name 的环境值。