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