2

I am working on multiple projects so I have multiple domains :

1. domain1
2. domani2

how to rewrite for example

domain1/user to domain1/?page=user,

domain2/user to domain2/clientArea/userMain

Now I am using :

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

but it rewrites all my domains.

P.S : I am new to nginx, and I am using Winginx local server;

John
  • 7,500
  • 16
  • 62
  • 95
  • Where did you add this `location /user` block? Are you using different `server {}` blocks for each domain? – Jap Mul Nov 01 '12 at 13:10

1 Answers1

7

There's 2 ways to do this depending on whether you have 1 or 2 server-blocks (if you expect lots of configuration differences between the 2 domains use 2, if the 2 domains have mostly the same content use 1)

in the case of 2 server-blocks config looks like this:

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

}

in the case of a single server-block it would look like this:

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

Note: that you can use the ^ regex as rewrite condition because because the location /user/ block it's in already selects out the url's you want to rewrite. That makes it slightly more efficient as the regex will be matched faster.

cobaco
  • 10,224
  • 6
  • 36
  • 33
  • thanks for that! There is no: check host first; if this&that host: then have a bunch of rewrites? – snh_nl Dec 07 '17 at 16:30