3

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

有问题的重写规则如下:

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

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

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

1 回答 1

0

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

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

rewrite ^/users/(\d+)\.html$ /users/profile.php?id=$1&$query_string last;
于 2014-01-16T13:39:31.500 回答