Обратите внимание на следующие URL-адреса.
Из четырех мне нужно перенаправить один как показано ниже: https://products.example.com/family/children
Это означает, что я хочу перенаправить URL-адреса, которые не содержат слова / products /
и / дети
. Если URL-адрес не содержит слова / products /
, но содержит / child
в конце, мне нужно заменить / child
на / children
.
ОБНОВЛЕНИЕ 1: У меня две проблемы, как показано ниже.
Я могу идентифицировать URL с помощью этого регулярного выражения , но не могу заменить.
Обновление 2 : Я думаю, что нашел способ идентифицировать : ^ (?!. * \ / Products (?: \ /)) (?: (. *) \ / | $)? (?: child) $
и замените: $ 1 / children
Следующая проблема: регулярное выражение работает только с опцией / m
. Можно ли изменить это так, чтобы оно работало без него:
rewrite ^(?!.*\/products(?:\/))(?:(.*)\/|$)?(?:child)$ $1/children permanent;
Что-то вроде этого должно работать для того, что вы сказали выше, однако ваш вопрос не это не так точно, как могло бы быть, и это может быть не совсем то, что вам нужно.
= означает точное совпадение. Удалите его, и я думаю, вы получите совпадение подстроки. Подробности вы можете прочитать в документации.
location = /family/child {
return 301 http://www.example.com/family/children;
}