Назад | Перейти на главную страницу

Перенаправление всех URL-адресов, содержащих 1 конкретное слово, но не содержащих других слов

Я переношу свой веб-сайт на другую платформу, но пока я заканчиваю разработку всех страниц нового веб-сайта, мне нужно, чтобы мои пользователи могли перемещаться между двумя платформами.

Поэтому мне нужно сделать 301 редирект для всех URL-адресов, которые содержат 1 конкретное слово, но не содержат других слов:

Пример:

  1. Старый сайт: www2.misite.com
  2. Новый сайт: www.misite.com

Мне нужно перенаправить все URL-адреса, содержащие слово «www2.misite.com/travel(.*)», но не содержащие слов «бронирование» и «отель».

Мой сервер - Nginx, я не знаю, выполняется ли это с помощью регулярного выражения или с помощью операторов nginx.

Большое спасибо.

Мне удалось решить свою проблему следующим образом:

    location ~ /travel(.*)+/(.*)$ {
    if ($uri !~ "^(.*)/(reservation|hotel|faq)(.*)"){
        return 301 https://www.misite.com$request_uri;
    }
    autoindex on;
    root /usr/share/nginx/html/sites/;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

Спасибо.

я пытаюсь

location ~ /travel(.*)+/(.*)$ {
    if ($request_uri !~ "^/(reservation|hotel|faq)/\w+$"){
        return 301 https://www.misite.com/$1;
    }
}

Но не работать на внутреннее состояние. :(

Попробуйте использовать регулярное выражение с отрицательным взглядом на два слова, которые вы не хотите пересылать. Вы можете сделать это в условии if или в правиле перезаписи.