以下是我的nginx重写规则
rewrite ^(.*)$ http://www.destination.com/main.php?utm_source=xxx&utm_medium=yyy&utm_campaign=zzz permanent;
到目前为止,一切都有效,除非有查询参数。
这是一个永久性的301重定向,我需要配置查询字符串时的情况,它将在utm跟踪查询之前附加。
如何在没有查询字符串的情况下处理重写时如何执行此操作?
例如
http://www.from.com/?test=ABC
转到
http://www.destination.com/main.php?test=ABC&utm_source=xxx&utm_medium=yyy&utm_campaign=zzz
而不是
http://www.destination.com/main.php?utm_source=xxx&utm_medium=yyy&utm_campaign=zzz&test=ABC
答案 0 :(得分:2)
您可以手动插入查询参数,但需要使用map
来计算是否需要&
分隔符。
map
应放在http
区块中:
map $is_args $separator {
default "";
"?" "&";
}
rewrite
看起来像这样:
rewrite ^(.*)$ /some/url.php?$args${separator}q=$1? permanent;
有关详细信息,请参阅this document。