多个域的位置重写

时间:2012-11-01 10:33:43

标签: nginx location rewrite query-string winginx

我正在开展多个项目,因此我有多个域名:

1. domain1
2. domani2

如何重写例如

domain1/user to domain1/?page=user

domain2/user to domain2/clientArea/userMain

现在我正在使用:

   location /user {
     rewrite ^/user$ /?page=user;
   }

但它会重写我的所有域名。

P.S:我是nginx的新手,我正在使用 Winginx 本地服务器;

1 个答案:

答案 0 :(得分:7)

有两种方法可以执行此操作,具体取决于您是否有1个或2个server - 块(如果您希望2个域之间有很多配置差异使用2,如果2个域的内容大部分使用相同的话1 )

在2 server的情况下 - 块配置如下所示:

server {
  server_name domain1;      
  location /user/ { rewrite ^ $scheme://$host/?page=user; }
  # add in rest of domain 1 config
}

server {
  server_name domain2;
  location /user/ { rewrite ^ $scheme://$host/clientArea/userMain; }
  # add in the rest of your domain 2 config

}

在单个server - 块的情况下,它看起来像这样:

server {
  server_name domain1 domain2;
  location /user/ {
    if ($host = domain1) { rewrite ^ $scheme://$host/?page=user; }
    if ($host = domain2) { rewrite ^ $scheme://$host/clientArea/userMain; }
  }
}

注意:你可以使用^ regex作为重写条件,因为它所在的location /user/块已经选择了你要重写的url。这使得它更有效率,因为正则表达式将更快匹配。