【问题标题】:Rewrite one url parameter and leave other重写一个url参数并保留其他
【发布时间】:2021-09-17 21:50:45
【问题描述】:

我们更改了推荐链接查询参数并希望保留以前版本的 url。 在抽象变体中我需要那个

/example?id=partner1&arg1=a&arg2=b
/?id=partner1&arg1=a&arg2=b

改写为

/example?rs=partners_partner1&arg1=a&arg2=b
/?rs=partners_partner1&arg1=a&arg2=b
id=partner1 -> rs=partners_partner1

我们如何跨 nginx 做到这一点?

【问题讨论】:

    标签: nginx url url-rewriting


    【解决方案1】:

    这不能用rewrite nginx 指令来完成,因为它与所谓的 normalized URI 一起工作,它不包含查询字符串。相反,您需要更改 $args nginx 内部变量:

    if ($args ~ (^|.*&)id=([^&]*)($|&.*)) {
        set $args $1rs=partners_$2$3;
    }
    

    将此块放在任何location块之外。

    【讨论】:

    • 谢谢,这个例子不起作用。但是在我在“set”行中添加 '&' 在 $3 和 $4 之间之后起作用。完美运行
    • 对不起,我的第一个正则表达式真的坏了,这可以用更简单的正则表达式来解决,检查更新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多