![如果查询字符串值不匹配,则 Nginx 重写/重定向](https://linux22.com/image/745956/%E5%A6%82%E6%9E%9C%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%80%BC%E4%B8%8D%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%88%99%20Nginx%20%E9%87%8D%E5%86%99%2F%E9%87%8D%E5%AE%9A%E5%90%91.png)
这个问题有点长,对此我深表歉意。情况如下:我有两个 URL 指向应用程序的两个不同版本。
https://www.codecanisters.in/devapp/(旧版本在此网址上运行)
https://www.codecanisters.in/devapp/neo(新版本在此网址上运行)
现在来看看查询字符串重定向规则。我有很多活动都是根据访问者的来源来运行的。例如,假设活动 foo 的来源 ID 为 1100,那么访问者将使用以下 URL 访问旧应用程序:
https://www.codecanisaters.in/devapp/?source=1100&someothervar=somethingelse很快。
新版本的应用程序发布后,我希望所有访问者都被重定向到新应用程序,即https://www.codecanisters.in/devapp/neo除非它们来自几个预先定义的来源,例如
https://www.codecanisaters.in/devapp/?source=1100或 1200 或 1300,但其余访问者无论来源是什么或 URL 中未提供来源都应重定向到新的应用程序。
理想情况下,如果可以在 nginx 配置的位置块中实现这一点,那就太棒了。我知道根据 nginx 文档,if 是邪恶的,但在这种情况下,如果我们必须使用 if 来比较查询字符串,我不介意。
还有另一个要求,当重定向到新的 URL 时,所有查询字符串仍应保留,而不会导致重定向循环。