Nginx – Redirect of all the URLs that contain 1 word in specific, but that do not contain other words

nginxregexregular expressions

I am migrating my website to another platform, but while I finish developing all the pages of the new website, I need my users to navigate between the 2 platforms.

So I need to make a 301 redirect of all the URLs that contain 1 word in specific, but that do not contain other words:

Example:

  1. Old site: www2.misite.com
  2. New site: www.misite.com

I need to redirect all URLs that contain the word "www2.misite.com/travel(.*)" but do not contain the words "reservation" and "hotel".

My server is Nginx, I do not know if this is done with a regular expression or with nginx statements.

Thank you very much.

Best Answer

I was able to solve my problem in the following way:

    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;
}

Thank you.

Related Topic