How to do location /test/place?id=2
Aleksandar Lazic
al-nginx at none.at
Sat Oct 19 08:22:37 UTC 2019
Hi P.V.Anthony.
Am 17.10.19 um 23:15 schrieb J. Lewis Muir:
> 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.
Have you tried Lewis suggestion with $arg_id, it looks exactly what you
searching for?
Untested:
location = /test/place {
if ($arg_id = "2") {
return 301 https://new.example.com/test/place?$args;
}
}
The documentation for arg_ is here.
http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_
>> 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
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
More information about the nginx
mailing list