捕获nginx中的查询参数重写

时间:2013-09-01 05:22:56

标签: url-rewriting nginx

我看到了一个nginx重写规则,它从URL中捕获了查询参数,并将相同的查询参数应用于重写的URL。我可以理解,在某些情况下,在重写规则中捕获查询参数可能/将是有益的,但在我看来,在这种情况下这样做是没有意义的。

有问题的重写规则如下:

rewrite ^/users/(\d+)\.html(?:\?(.*))?$ /users/profile.php?id=$1&$2 last;

我怀疑这是毫无意义的吗?我相信以下重写规则会产生同样的效果:

rewrite ^/users/(\d+)\.html$ /users/profile.php?id=$1 last;

1 个答案:

答案 0 :(得分:0)

第一次重写不起作用,$2将始终为空,即使有一个传递给请求的查询字符串,

你的第二次重写非常正确,但我不认为它会保留查询字符串,如果你想这样做,那么你应该自己附加它。

rewrite ^/users/(\d+)\.html$ /users/profile.php?id=$1&$query_string last;