nginx - 尝试使用内部变量重定向路径失败

nginx - 尝试使用内部变量重定向路径失败

我想将请求重定向到文件

/path/to/file/content?path=file.pdf

/new/path/to/file/file.pdf

在同一个域下。

我尝试了简单的重写规则或者类似这样的。

location ~ ^/path/to/file/content?path=(.*) {
   return 301 /new/path/to/file/$1;
}

不幸的是,nginx 不理解该变量。我做错了什么?有人能给我一些建议吗?不幸的是,我对 reqex 了解不多。非常感谢!

答案1

location与Apache 重写规则不同, rewritenginx 指令与所谓的规范化URI(参见location指令文档找出它的含义)不包括查询部分。path使用以下配置片段检查查询参数是否为空,如果请求 URI 与您的模式匹配,则执行重定向:

if ($arg_path) {
    rewrite ^/path/to/file/content /new/path/to/file/$arg_path? permanent;
}

相关内容