url - 为什么 $args 或 $query_string 在 & 之后不包含查询参数?

标签 url nginx url-rewriting query-string

我正在尝试设置一个 nginx 重写规则来修改带有查询请求的 URL。

例如。:

www.abc.com/pathA/pathB/script.pl?paraA=10&paraB=20

应该改写为:
www.abc.com/pathA/pathB/script.pl.1020

我尝试使用变量 $args$query_string (基于 nginx 文档它们是相同的)检查 URL 是否有查询请求。但我发现$args (或 $query_string )只有 & 之前的内容.

在我的例子中,这意味着 $args = paraA=10 . &后我无法获取参数内容.我通过将级别设置为调试的 nginx 错误日志来确定这一点。

知道为什么我在 & 之后无法获取查询参数吗?在变量 $args$query_string ?

最佳答案

您需要使用 $arg_<argname>
www.abc.com/pathA/pathB/script.pl?paraA=10¶B=20
将改写为:www.abc.com/pathA/pathB/script.pl.1020

下面是一个示例配置来做这样的事情

location /pathA/pathB/script.pl {
    set $need_redirect "";
    if ($arg_paraA) {
       set $need_redirect "A";
    }

    if ($arg_paraB) {
       set $need_redirect "B$need_redirect";
    }

    if ($need_redirect = "BA") {
       rewrite ^(.*)$ $1.$arg_paraA$arg_paraB;
    }
}

关于url - 为什么 $args 或 $query_string 在 & 之后不包含查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516307/

相关文章:

php - 如何在 PHP 中检测、删除和重定向末尾带有 # 的 URL?

node.js - 如何模拟对网络服务器的大量同时请求?

mod-rewrite - 我可以在 url 中使用下划线而不是连字符吗?

r - 如何从R中的url地址直接读取图像文件

c# - 如何在 C# 中弹出 url 段?

ruby-on-rails - 乘客问题 - Apache

asp.net - 无需身份验证的 URL 重写

php - Apache 重写查询字符串(复选框数组)

.htaccess 可以工作,但不允许我访问子文件夹中的博客 index.php

perl - 如何使 Mojolicious 的 url_for()->to_abs() 在 nginx 后面返回正确的方案(http 或 https)