Rewrite problem

HI list
I want to redirect
http://www.mysite.com/bbs/viewthread.php?tid=8123&extra=
to
http://www.mysite.com/forum.php?mod=viewthread&tid=8123

This is what I place in the “server” block in the nginx.conf
rewrite ^/bbs/viewthread.php?tid=([0-9]+).*$
/forum.php?mod=viewthread&tid=$1 last;

but when visit http://www.mysite.com/bbs/viewthread.php?tid=8123&extra=.
It shows 404 error.

Could anyone point me out what is wrong?
Thank you!

sosogh [email protected] a écrit :

HI list

I want to redirect
http://www.mysite.com/bbs/viewthread.php?tid=8123&extra=
to
http://www.mysite.com/forum.php?mod=viewthread&tid=8123

This is what I place in the “server” block in the nginx.conf
rewrite ^/bbs/viewthread.php?tid=([0-9]+).*$
/forum.php?mod=viewthread&tid=$1 last;

but when visit http://www.mysite.com/bbs/viewthread.php?tid=8123&extra=.
It shows 404 error.

Could anyone point me out what is wrong?
Thank you!

Take a look at your error log, it’s write which file nginx can’t find
and you could see what’s wrong with your regex.
Regards,

Please adhere a tail of error log.

Thanks.

Yours sincerely,
Christopher M.

Ambassador/Contributor of Fedora Project and many others.

Hello!

On Tue, Sep 04, 2012 at 10:59:40AM +0800, sosogh wrote:

It shows 404 error.

Could anyone point me out what is wrong?
Thank you!

The rewrite in question won’t match anything as rewrite work with
URI without arguments. Use something like this instead:

location = /bbs/viewthread.php {
if ($arg_tid ~ ^[0-9]+$) {
rewrite ^ /forum.php?mod=viewthread&tid=$arg_tid? last;
}

...

}

Some more details may be found here:

http://nginx.org/r/location
http://nginx.org/r/rewrite
http://nginx.org/r/if

Maxim D.

Thank you very much .It works.
But there is another problem.

I want
http://www.mysite.com/bbs/
to

why the following conf does not work?
rewrite ^/bbs/$ /index.php last;

I want
http://www.mysite.com/bbs/thread-4270-1-2.html
to
http://www.mysite.com/forum.php?mod=viewthread&tid=4270&extra=1&page=2

why the following conf does not work?
location ~* ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ {
rewrite ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+).html$
/forum.php?mod=viewthread&tid=$1&extra=$2&page=$3 break;
}

Thank you !

Hello!
On Tue, Sep 04, 2012 at 10:59:40AM +0800, sosogh wrote:

It shows 404 error.

Could anyone point me out what is wrong?
Thank you!
The rewrite in question won’t match anything as rewrite work with
URI without arguments. Use something like this instead:
location = /bbs/viewthread.php {
if ($arg_tid ~ ^[0-9]+$) {
rewrite ^ /forum.php?mod=viewthread&tid=$arg_tid? last;
}

}
Some more details may be found here:
Module ngx_http_core_module
Module ngx_http_rewrite_module
Module ngx_http_rewrite_module
Maxim D.

Hello!

On Tue, Sep 04, 2012 at 08:05:46PM +0800, sosogh wrote:

rewrite ^/bbs/$ /index.php last;
Define “does not work”. If in doubt, try looking into error log,
probably with

rewrite_log on;

added to your config (and error_log set to at least “notice”
level), it should give you enough information to find out what
goes wrong.

I want
http://www.mysite.com/bbs/thread-4270-1-2.html
to
http://www.mysite.com/forum.php?mod=viewthread&tid=4270&extra=1&page=2

why the following conf does not work?
location ~* ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ {
rewrite ^/bbs/thread-([0-9]+)-([0-9]+)-([0-9]+).html$
/forum.php?mod=viewthread&tid=$1&extra=$2&page=$3 break;
}

This will likely result in /forum.php source code being returned as
you use “break” and doesn’t handle php in the location in
question. See Module ngx_http_rewrite_module for details.

Maxim D.