当整个域都已重定向后,如何将页面重定向到另一个域?

时间:2019-07-29 15:12:23

标签: nginx

我正在尝试设置一个页面以重定向到另一个域上的同一页面。所以我有

https://domain1.com/pagetoredirect

我希望它指向

https://domain2.com/pagetoredirect

但是,整个domain1.com已经重定向到domain2.com上的特定页面。

这是我的conf文件中针对sites_enabled中域的设置。

map $http_host $new {
    ~^(www\.)?domain2.com 1;
    ~^(www\.)?domain3.com 2;
}

server {
    listen 80;
    listen [::]:80;

    server_name ~^(www\.)?domain1.com$ ~^(www\.)?domain2.com$ ~^(www\.)?domain3.com$;

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle2.crt;
    ssl_certificate_key /etc/nginx/ssl/[DOMAIN].key;

    if ($new = '1') {
        rewrite ^(.*) https://www.domain1.com/currentredirect;
    }

    if ($new = '2') {
        rewrite ^(.*) https://www.domain1.com/currentredirect;
    }

    return 302 https://www.domain1.com$request_uri;
}

我尝试使用以下格式为我要指向的特定页面添加其他重定向:

rewrite ^(/pagetoredirect/) https://www.domain1.com/pagetoredirect;

我希望这将优先于域级重定向,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

Location块的优先级取决于它们的特异性-更具体的路径将首先匹配:

server {
    listen 80;
    listen [::]:80;

    server_name .domain1.com;

    ssl on;
    ssl_certificate /etc/nginx/ssl/ssl-bundle2.crt;
    ssl_certificate_key /etc/nginx/ssl/domain1.key;

    location / {
      return 301 https://www.domain2.com/currentredirect;
    }

    location /pagetoredirect {
      return 302 https://www.domain2.com$request_uri;
    }
}