如何重定向所有请求(除非有完全匹配的字符串)

如何重定向所有请求(除非有完全匹配的字符串)

要求-我想要重定向所有以结尾的/abcd请求/products/abcd

这应该匹配所有这样的 URL -

  • /收藏/abcd
  • /收藏/全部/abcd
  • /你好/世界/abcd

这就是我正在使用的- rewrite /abcd/?$ https://example.com/products/abcd permanent;

问题是,如果有人访问/products/abcd,这个 url 也匹配重写规则,并进入无限循环。

我也尝试了这个正则表达式,但它与任何 URL 都不匹配(即没有发生重定向)-rewrite /(^products/)abcd/?$ https://example.com/products/abcd permanent;

答案1

我找到了一个解决方案,它使用 nginx 位置块-

location /products {}
location / {
    rewrite /abcd/?$ https://example.com/products/abcd permanent;
}

相关内容