Redirection issues
Maxim Dounin
mdounin at mdounin.ru
Mon Jun 24 13:13:59 UTC 2013
Hello!
On Mon, Jun 24, 2013 at 08:58:29AM -0400, TECK wrote:
> Hello everyone,
>
> I'm currently using Nginx 1.4.1 on CentOS 6.4 64bits and trying to perform a
> redirect of this type:
> location /alpha {
> location ~ ^/alpha/script.+([\d]+)$ {
> return 301 /beta/info/$1/;
> }
> }
>
> The originating location is /alpha/script.php?id=328.
> The redirected location is /beta/info/328/.
>
> For some reason, the above redirect returns a 404 with the URL:
> http://www.domain.com/beta/script.php
> Which does not exist anymore. It looks like the URI is not parsed from the
> regex?
> I also tried this format, without success:
> location ~ ^/alpha/script\.php?id=([\d]+)$ {
Query string isn't considered by location matching. If you want
to test request arguments, you have to do it inside a location
matched, like this:
location = /alpha/script.php {
if ($arg_id) {
return 301 /beta/info/$arg_id/;
}
...
}
In this particular case test is likely useless, and just a return
will be enough.
--
Maxim Dounin
http://nginx.org/en/donation.html
More information about the nginx
mailing list