不同的重写规则重定向相同的URL

时间:2017-01-30 07:34:59

标签: nginx

rewrite ^/old-url /new-url permanent; rewrite ^/old-url/old-url-sub /new-url/new-url-sub permanent;

2个网址(/ old-url和old-url / old-url-sub)重定向到相同的网址( / new-url

有什么问题?

1 个答案:

答案 0 :(得分:1)

问题是正则表达式^/old-url/old-url以及/old-url/old-url-sub/old-url/anything-else匹配。

因此,为两个URI调用了第一个rewrite语句。

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

尝试:

rewrite ^/old-url$ /new-url permanent;

如果您尝试将/old-url/xxx重定向到/new-url/xxx xxx,那么您将使用带有捕获的单个rewrite语句:

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

请参阅this useful resource on regular expressions