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;
}
因为 (.*)
匹配所有内容,它会吞噬所有内容,包括 _
个字符,因此您的第一个正则表达式匹配第二个正则表达式所做的所有内容,因此永远不会达到第二条规则。
所以我有 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;
}
因为 (.*)
匹配所有内容,它会吞噬所有内容,包括 _
个字符,因此您的第一个正则表达式匹配第二个正则表达式所做的所有内容,因此永远不会达到第二条规则。