nginx-301 将/subfolder1/some-friendly-url-12345 重定向到/subfolder2/some-friendly-url

nginx-301 将/subfolder1/some-friendly-url-12345 重定向到/subfolder2/some-friendly-url

我是 nginx 的新手。

我有一些旧的网址,例如/aaaaa/一些友好-url-12345我想将这些 URL 301 重定向到新的 URL,但没有 ID,例如/bbbbb/一些友好-url

我也想重定向/啊啊啊啊//bbbbb/

我尝试了一些地点指令,但不知何故我无法成功。

这是我尝试过的一个:

location ~ /aaaaa/(?P<a_slug>.*)$-(?P<a_id>.*) {
   return 301 https://domain.com/bbbbb/$a_slug;
}

谢谢。

答案1

如果将 移到$末尾,正则表达式应该适用于有限的情况。可以通过使最后一个术语仅匹配数字来改进它(这样您就不会依赖于第一个捕获的贪婪性)。例如:

location ~ ^/aaaaa/(?<a_slug>.*)-\d+$ {
    return 301 /bbbbb/$a_slug;
}

也可以使用rewrite表达式重写:

rewrite ^/aaaaa/(.*)-\d+$ /bbbbb/$1 permanent;

这个文件了解更多信息。此外,此正则表达式资源

相关内容