Nginx 不同的重写规则重定向相同的url

Nginx 不同的重写规则重定向相同的url,nginx,Nginx,重写^/旧url/新url永久; 重写^/old url/old url sub/new url/new url sub-permanent 2个url(/old url和old url/old url sub)重定向到同一url(/new url) 问题是什么?问题是正则表达式^/old url匹配/old url和/old url/old url sub和/old url/任何其他内容 因此,对两个URI调用第一个rewrite语句 如果希望正则表达式只匹配整个字符串,则需要在模式的前面和后

重写^/旧url/新url永久;
重写^/old url/old url sub/new url/new url sub-permanent

2个url(/old url和old url/old url sub)重定向到同一url(/new url


问题是什么?

问题是正则表达式
^/old url
匹配
/old url
/old url/old url sub
/old url/任何其他内容

因此,对两个URI调用第一个
rewrite
语句

如果希望正则表达式只匹配整个字符串,则需要在模式的前面和后面使用锚点。如您所知,
^
锚定模式的前部,而
$
锚定模式的后部

尝试:


如果您试图将
/old url/xxx
重定向到
/new url/xxx
,其中
xxx
是任何东西,您将使用一个带有捕获的
rewrite
语句:

rewrite ^/old-url(/.*)?$ /new-url$1 permanent;

请参阅。

重写^/old url$/新url permanent;这条线解决了问题。谢谢
rewrite ^/old-url(/.*)?$ /new-url$1 permanent;