Nginx 配置重写规则组合

Nginx config rewrite rule combination

所以我有 url 重写的这 2 条规则。

location ~ /details {
rewrite ^/details/(.*)/(.*)/(.*)/(.*)_(.*).html$ /site/..html permanent;
rewrite ^/details/(.*)/(.*)/(.*)/(.*)_(.*)_(.*).html$ /site/...html permanent;
}

但出于某种原因,第一个单独运行时运行良好,但第二个无法启动。

有什么方法可以将这 2 条规则合二为一吗?

感谢您的任何建议。

尝试调换顺序:

location ~ /details {
  rewrite ^/details/(.*)/(.*)/(.*)/(.*)_(.*)_(.*).html$ /site/...html permanent;
  rewrite ^/details/(.*)/(.*)/(.*)/(.*)_(.*).html$ /site/..html permanent;
}

因为 (.*) 匹配所有内容,它会吞噬所有内容,包括 _ 个字符,因此您的第一个正则表达式匹配第二个正则表达式所做的所有内容,因此永远不会达到第二条规则。