从 Apache 2.2 转换 Nginx 的重写规则

从 Apache 2.2 转换 Nginx 的重写规则

我正在尝试转换这个 Nginx 规则:

if ($args ~* ^file=(.*)$)
        {
            set $filename $1;
            add_header Content-Disposition "attachment; filename=$filename";
    }

因此它可以在 Apache 2.2 上运行,但我发现的唯一在线转换工具使用了 Apache 2.2 无法理解的“if”指令。

有人可以帮忙吗?

问候。

答案1

这种形式的问题似乎很常见:“请将我的配置文件的这个片段从 Apache 转换为 NGinx”(反之亦然)。Apache 和 NGinx 的操作方式截然不同,因此将一个配置文件直接转换为另一个配置文件是没有意义的。每个配置文件都有自己的最佳实践,最终获得合理、可管理的配置文件的唯一方法是退后一步,看看您试图实现的最终结果。

看起来您正试图在设置 file=x 参数时强制客户端浏览器下载(而不是查看)给定的 URL。在 Apache 中,实现此目的的常用方法是使用文件匹配标头指令。 以下是一个如何做到这一点的示例。现在,该示例是针对路径而不是参数进行匹配。如果没有更多上下文,很难判断您是否真的需要使用参数来执行此操作。您至少需要提供与上述相关的位置块。

相关内容