Я не знаю, разрешен этот вопрос или нет. Если нет, простите меня :)
Во всяком случае, у меня есть правило сопоставления для перенаправления nginx
/hotel/xyz/abc /hotel/xyz/abc-nana;
/hotel/xyz/abc/ /hotel/xyz/abc-nana;
~^/hotel/xyz/abc\?(.*) /hotel/xyz/abc-nana?$1;
У меня вопрос, можно ли их объединить в одно правило? Я плохо знаю регулярное выражение
Я предполагаю xyz
и abc
означают любую буквенно-цифровую строку. Тогда вы ищете такое правило:
location ~ ^/hotel/([0-9a-z]+)/([0-9a-z]+)/?$ {
rewrite ^ http://$host/hotel/$1/$2-nana$is_args$args permanent;
}
(0-9a-z]+)
соответствует любой буквенно-цифровой строке, имеющей одно или несколько совпадений. Результаты сохраняются в $1
и $2
переменные. Последнее совпадение косой черты необязательно (?
указывает 0 или 1 совпадение).
В nginx нельзя сопоставить аргументы запроса в location
или rewrite
заявления. Однако, если вы хотите добавить только возможные аргументы запроса без изменения перенаправления, тогда $is_args$args
для этого достаточно.