多个域的位置重写

Joh*_*ohn 2 location rewrite nginx query-string winginx

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

1. domain1
2. domani2
Run Code Online (Sandbox Code Playgroud)

如何重写例如

domain1/user to domain1/?page=user,

domain2/user to domain2/clientArea/userMain
Run Code Online (Sandbox Code Playgroud)

现在我正在使用:

   location /user {
     rewrite ^/user$ /?page=user;
   }
Run Code Online (Sandbox Code Playgroud)

但它重写了我的所有域名.

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

cob*_*aco 7

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

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

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
Run Code Online (Sandbox Code Playgroud)

}

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

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

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