nginx以不同方式重定向根域和子路径

时间:2016-04-09 18:13:55

标签: redirect nginx url-redirection nginx-location

我希望将我的域(www.domain.com)的根目录重定向到其他域上的特定页面。

如果有人访问我的域(www.domain.com/something)上的子路径,那么它应该使用相同的$ request_uri重定向到另一个域。

我已经尝试了以下配置,但不知何故后者302总是触发..

server {
    listen 80;
    server_name server_name ~^(?<subdomain>.+)\.domain\.com$ domain.com;
    location = / {
            return 302 https://www.otherdomain.com/special/something;
    }
    return 302 https://www.otherdomain.com/$request_uri;
}

我的想法是,也许后者302应该位于一个位置块中,并且与/有一个独占匹配。但是我还没有设法自己解决这个问题。

1 个答案:

答案 0 :(得分:1)

以下代码可以解决您的问题。 (假设您的nginx服务器名称是www.domain.com)。当您访问www.domain.com时,它将重定向到特定页面,如果您提及路径,则会将其重定向到 otherdomain 服务器上的该路径。

  if ( $request_uri = "/" ){
       return www.otherdomain.com/special/something;
       break;
   }
return www.otherdomain.com$request_uri;