【问题标题】:Capture query parameters in nginx rewrites在 nginx 重写中捕获查询参数
【发布时间】:2013-09-04 12:25:55
【问题描述】:

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

有问题的重写规则如下:

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

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

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

【问题讨论】:

  • 简单的重写不能改变查询参数,它们被保存在$args变量中,这个重写唯一会捕获的就是如果有对uri的扩展,例如:example.com/index.html/some/extension

标签: url-rewriting nginx


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多