我想将请求重定向到文件
/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 重写规则不同, rewrite
nginx 指令与所谓的规范化URI(参见location
指令文档找出它的含义)不包括查询部分。path
使用以下配置片段检查查询参数是否为空,如果请求 URI 与您的模式匹配,则执行重定向:
if ($arg_path) {
rewrite ^/path/to/file/content /new/path/to/file/$arg_path? permanent;
}