How to do location /test/place?id=2

J. Lewis Muir jlmuir at imca-cat.org
Thu Oct 17 21:15:13 UTC 2019


On 10/18, P.V.Anthony wrote:
> Currently have the following url,
> 
> https://old.example.com/test/place?id=1
> https://old.example.com/test/place?id=2
> https://old.example.com/test/place?id=3
> 
> Need to redirect only id=2 to another url.
> 
> Did the following and it works for id=2. Need id=1 and id=3 to continue
> normally without change.
> 
> location = /test/place {
>      if ($args = "id=2") {
>        return 301 https://new.example.com/test/place?$args;
>     }
> }

You might want to use $arg_id here (i.e., the $arg_<name> variable for
the <name> argument).  Otherwise, it won't work if any other arguments
are given.

> Or is there a way to do the following? That would be ideal.
> 
> location = /test/place?id=2 {
>     return 301 https://new.example.com/test/place?id=2
> }

I don't think that's allowed.

> Unfortunately the above does not work. What is missing?

What doesn't work?

I would think your

> location = /test/place {

block would work, although not as shown, but I assume you just left
out the part that normally handles the request.  It would handle the
requests for id=1 and id=3 as before, and it's just the id=2 case that
gets redirected, right?

Lewis


More information about the nginx mailing list