![如何重定向所有请求(除非有完全匹配的字符串)](https://linux22.com/image/725237/%E5%A6%82%E4%BD%95%E9%87%8D%E5%AE%9A%E5%90%91%E6%89%80%E6%9C%89%E8%AF%B7%E6%B1%82%EF%BC%88%E9%99%A4%E9%9D%9E%E6%9C%89%E5%AE%8C%E5%85%A8%E5%8C%B9%E9%85%8D%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%89.png)
要求-我想要重定向所有以结尾的/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;
}