2

我正在处理多个项目,所以我有多个域:

1. domain1
2. domani2

例如如何重写

domain1/user to domain1/?page=user,

domain2/user to domain2/clientArea/userMain

现在我正在使用:

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

但它重写了我所有的域。

PS:我是 nginx 新手,我使用的是Winginx本地服务器;

4

1 回答 1

7

有 2 种方法可以做到这一点,具体取决于您是 1 还是 2server块(如果您期望 2 个域之间有很多配置差异,则使用 2,如果 2 个域具有大部分相同的内容,则使用 1)

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

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

注意:您可以使用 ^ 正则表达式作为重写条件,因为location /user/它所在的块已经选择了您要重写的 url。由于正则表达式的匹配速度会更快,因此它的效率会更高一些。

于 2012-11-01T20:25:48.450 回答