2015-02-13 5 views
0

Итак, у меня есть эти 2 правила для перезаписи URL.Nginx config rewrite rule combination

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

Но по какой-то причине первый сам по себе работает нормально, а второй не подбирает.

Есть ли способ, которым я мог бы объединить эти 2 правила в 1?

Спасибо за любые предложения.

ответ

0

Попробуйте изменить порядок:

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

Поскольку (.*) соответствует всем, он будет сожрать все, включая _ персонажей, так что ваше первое регулярное выражение соответствует все, что второму один делает, и, таким образом, второе правило никогда не будет достигнуто.

+0

Спасибо, что все в порядке. Очень признателен – aBe