这个问题有点长,对此我深表歉意。情况如下:我有两个 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 时,所有查询字符串仍应保留,而不会导致重定向循环。