什么';对于此URL模式,正确的nginx重写表达式是什么?

什么';对于此URL模式,正确的nginx重写表达式是什么?,nginx,url-rewriting,Nginx,Url Rewriting,我正在尝试让Nginx重写规则正常工作。重写模式应匹配的URL示例如下: https://test.mydomaind.com/abc.php?id=1 我的重写规则: rewrite ^/abc\.php?id=(.*)$ https://test.mydomain.com/page/$1 permanent; 但这将返回一个404和示例URL 谁能告诉我我做错了什么?当我在条件中省略查询字符串参数时,重写确实起作用,并且用户被重定向301: rewrite ^/abc\.php$ htt

我正在尝试让Nginx重写规则正常工作。重写模式应匹配的URL示例如下:

https://test.mydomaind.com/abc.php?id=1
我的重写规则:

rewrite ^/abc\.php?id=(.*)$ https://test.mydomain.com/page/$1 permanent;
但这将返回一个404和示例URL

谁能告诉我我做错了什么?当我在条件中省略查询字符串参数时,重写确实起作用,并且用户被重定向301:

rewrite ^/abc\.php$ https://test.mydomain.com/page permanent; # THIS WORKS

非常感谢您的帮助

开始的任何内容都是查询字符串,在将URI与
位置
重写
语句匹配时不考虑

查询字符串(或参数)可在
$request\u uri
$query\u string
(又称
$args
)变量和前缀为
$arg\u
的变量族中访问

您可以通过以下方式实现类似的功能:

location = /abc.php {
    return 301 https://test.mydomain.com/page/$arg_id;
}

如果需要测试是否存在
id=
参数,则需要使用
map
If
语句。

开始的任何内容都是查询字符串,在将URI与
位置
重写
语句匹配时不考虑

查询字符串(或参数)可在
$request\u uri
$query\u string
(又称
$args
)变量和前缀为
$arg\u
的变量族中访问

您可以通过以下方式实现类似的功能:

location = /abc.php {
    return 301 https://test.mydomain.com/page/$arg_id;
}

如果需要测试是否存在
id=
参数,则需要求助于
map
If
语句。

非常感谢!我完全错过了。感觉我离目标又近了一步,但是重定向还没有产生预期的结果。$arg_id变量似乎为空。通过使用多个参数进行测试,我得到一个URL,看起来像test.mydomain.com/page//。有什么建议吗?嗨,理查德,你能看看我的评论吗?非常感谢!我完全错过了。感觉我离目标又近了一步,但是重定向还没有产生预期的结果。$arg_id变量似乎为空。通过使用多个参数进行测试,我得到一个URL,看起来像test.mydomain.com/page//。有什么建议吗?嗨,理查德,你能看看我的评论吗?