Nginx配置重写规则组合

时间:2015-02-13 05:05:41

标签: .htaccess url nginx rewrite config

所以我有两条网址重写规则。

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

但出于某种原因,第一个单独使用就可以了,但第二个不会起作用。

我有没有办法将这2条规则合并为1?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

尝试切换订单:

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

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