Redirect nginx.conf文件的重定向规则

Redirect nginx.conf文件的重定向规则,redirect,nginx,Redirect,Nginx,我在我的.conf文件中为我们的站点列出了一个重定向规则列表(大约10k行重定向规则) 它们是规则和风格的混合体 rewrite ^(.*)/p-100.aspx(.*)$ https:page A 及 重写规则列在前面,“如果”规则列在后面,但如果url是“mysite/p-100.aspx?BrandID=123”,则“如果重定向”规则似乎凌驾于“重写”规则之上 我可以拥有它以便重写规则优先吗?关于if语句 请注意,我有1000条重接规则和1000条“如果”规则 谢谢 编辑:根据请求添加更

我在我的.conf文件中为我们的站点列出了一个重定向规则列表(大约10k行重定向规则)

它们是规则和风格的混合体

rewrite ^(.*)/p-100.aspx(.*)$ https:page A

重写规则列在前面,“如果”规则列在后面,但如果url是“mysite/p-100.aspx?BrandID=123”,则“如果重定向”规则似乎凌驾于“重写”规则之上

我可以拥有它以便重写规则优先吗?关于if语句

请注意,我有1000条重接规则和1000条“如果”规则

谢谢

编辑:根据请求添加更大的代码

rewrite ^(.*)/b-113.aspx(.*)$ https:page1.hmtl permanent;
rewrite ^(.*)/b-114.aspx(.*)$ https:page2.hmtl permanent;
rewrite ^(.*)/b-115.aspx(.*)$ https:page3.hmtl permanent;
rewrite ^(.*)/b-116.aspx(.*)$ https:page4.hmtl permanent;
rewrite ^(.*)/b-117.aspx(.*)$ https:page5.hmtl permanent;
rewrite ^(.*)/b-118.aspx(.*)$ https:page6.hmtl permanent;
rewrite ^(.*)/b-119.aspx(.*)$ https:page5.hmtl permanent;
rewrite ^(.*)/b-120.aspx(.*)$ https:page6.hmtl permanent;
rewrite ^(.*)/b-121.aspx(.*)$ https:page7.hmtl permanent;
rewrite ^(.*)/b-122.aspx(.*)$ https:page8.hmtl permanent;

if ($query_string ~ "BrandID=122"){ rewrite .*$ pageA.hmtl? redirect; }
if ($query_string ~ "BrandID=121"){ rewrite .*$ pageB.hmtl? redirect; }
if ($query_string ~ "BrandID=120"){ rewrite .*$ pageC.hmtl? redirect; }
if ($query_string ~ "BrandID=119"){ rewrite .*$ pageD.hmtl? redirect; }
if ($query_string ~ "BrandID=118"){ rewrite .*$ pageE.hmtl? redirect; }
if ($query_string ~ "BrandID=117"){ rewrite .*$ pageF.hmtl? redirect; }
if ($query_string ~ "BrandID=116"){ rewrite .*$ pageG.hmtl? redirect; }
if ($query_string ~ "BrandID=115"){ rewrite .*$ pageI.hmtl? redirect; }
if ($query_string ~ "BrandID=114"){ rewrite .*$ pageJ.hmtl? redirect; }

请注意,page.html不是真正的URL,而是唯一的URL

似乎您有O(n)规则,这会导致维护问题。唯一的帮助方法是,您共享一大块配置,让我们找到一个公共性,然后再进行优化,以缩小到O(LogN)甚至O(1)您所说的“O(n)规则”是什么意思?我应该解释一下,这些是网站平台迁移的直接规则。我将用一个更大的部分来更新这个问题,但它实际上是1000行重写,然后是100行“如果”规则。次数或条件和重写与代码行数成正比。似乎你有O(n)规则,这会导致维护问题。唯一的帮助方法是,您共享一大块配置,让我们找到一个公共性,然后再进行优化,以缩小到O(LogN)甚至O(1)您所说的“O(n)规则”是什么意思?我应该解释一下,这些是网站平台迁移的直接规则。我将用更大的篇幅来更新这个问题,但它实际上是1000行重写,然后是100行“if”规则,重写的数量或条件与代码行数成正比
rewrite ^(.*)/b-113.aspx(.*)$ https:page1.hmtl permanent;
rewrite ^(.*)/b-114.aspx(.*)$ https:page2.hmtl permanent;
rewrite ^(.*)/b-115.aspx(.*)$ https:page3.hmtl permanent;
rewrite ^(.*)/b-116.aspx(.*)$ https:page4.hmtl permanent;
rewrite ^(.*)/b-117.aspx(.*)$ https:page5.hmtl permanent;
rewrite ^(.*)/b-118.aspx(.*)$ https:page6.hmtl permanent;
rewrite ^(.*)/b-119.aspx(.*)$ https:page5.hmtl permanent;
rewrite ^(.*)/b-120.aspx(.*)$ https:page6.hmtl permanent;
rewrite ^(.*)/b-121.aspx(.*)$ https:page7.hmtl permanent;
rewrite ^(.*)/b-122.aspx(.*)$ https:page8.hmtl permanent;

if ($query_string ~ "BrandID=122"){ rewrite .*$ pageA.hmtl? redirect; }
if ($query_string ~ "BrandID=121"){ rewrite .*$ pageB.hmtl? redirect; }
if ($query_string ~ "BrandID=120"){ rewrite .*$ pageC.hmtl? redirect; }
if ($query_string ~ "BrandID=119"){ rewrite .*$ pageD.hmtl? redirect; }
if ($query_string ~ "BrandID=118"){ rewrite .*$ pageE.hmtl? redirect; }
if ($query_string ~ "BrandID=117"){ rewrite .*$ pageF.hmtl? redirect; }
if ($query_string ~ "BrandID=116"){ rewrite .*$ pageG.hmtl? redirect; }
if ($query_string ~ "BrandID=115"){ rewrite .*$ pageI.hmtl? redirect; }
if ($query_string ~ "BrandID=114"){ rewrite .*$ pageJ.hmtl? redirect; }