Читал что использование if не очень хорошая практика. Что нужно знать об этом?
if
при использовании в контексте location
, в некоторых случаях может делать не то, что вы ожидаете. Там приводится несколько примеров таких случаев.if
в контексте location
:return ...;
rewrite ... last;
server
таких проблем нет.if (...) { return 301 /@$1; }
можно применять и в server
и в location
.
Шаблон
(.*)
совпадёт с/1/
и с/1/2/3/
.Правила RewriteRule применяются одно за другим в том порядке, в котором записаны.
Нужно просто поменять местами второе и третье правило.
Или заменить
(.*)
на([^/]*)