我看到了一个nginx重写规则,它从URL中捕获了查询参数,并将相同的查询参数应用于重写的URL。我可以理解,在某些情况下,在重写规则中捕获查询参数可能/将是有益的,但在我看来,在这种情况下这样做是没有意义的。
有问题的重写规则如下:
rewrite ^/users/(\d+)\.html(?:\?(.*))?$ /users/profile.php?id=$1&$2 last;
我怀疑这是毫无意义的吗?我相信以下重写规则会产生同样的效果:
rewrite ^/users/(\d+)\.html$ /users/profile.php?id=$1 last;
答案 0 :(得分:0)
第一次重写不起作用,$2
将始终为空,即使有一个传递给请求的查询字符串,
你的第二次重写非常正确,但我不认为它会保留查询字符串,如果你想这样做,那么你应该自己附加它。
rewrite ^/users/(\d+)\.html$ /users/profile.php?id=$1&$query_string last;