2

I am trying to set up redirection from one domain to another, while preserving request uri and/or requested subdomains, so that https://foo.bar.domain.com/file gets nicely redirected to https://foo.bar.domain.org/file.

I am able to utilise very simple rule in my nginx configuration akin to:

server_name domain.com *.domain.com;
root /var/www/html/domain.com/public/www;
index index.php index.html index.htm index.txt index;

location / {
    return 302 $scheme://$host$request_uri;
}

However my return returns the same URL, since $host preserves both requested subdomains, but TLD too. Is there a way to set up new variable akin to $host2 = regex_replace($host, '.com$', '.org'), and then use this?:

PSEUDO-SOLUTION

location / {
    $host2 = regex_replace($host, '.com$', '.org')
    return 302 $scheme://$host2$request_uri;
}

I would very much like to keep it as simple as possible, without introducing rewrite to new pseudo-location where the url is regex processed if possible (i.e. similar to my pseudo-solution), since I won't be the one maintaining the code.

1 Answer 1

2

It seems I have found a way to do this. I added

map $host $newhost {
    "~^(.*).com" $1.org;
    default $host;
}

before the server blocks, and am now redirecting with

location / {
    return 302 $scheme://$newhost$request_uri;
}

Hope this is useful some someone in the future, or feel free to show me better way if exists.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.