Nginx正则表达式位置

2024-10-01 11:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这个正则表达式不起作用。在

下面是一个。在

    location ~* /a2aEx\?.*$ {

    }

我请求/a2aEx?AID=ASA_1&BID=1,但是NGINX用404 status响应

但是,如果我将其修复到下面,它可以正常工作,返回200 status

^{pr2}$

我用下面的代码验证Python上的正则表达式。在

 text = "/a2aEx?AID=ASA_1&BID=1"

 reObj = re.match("/a2aEx\?.*$", text)
 print reObj.string  # it returns `/a2aEx?AID=ASA_1&BID=1`

看到这个症状,转义字符(\)并不像我预期的那样工作。在


Tags: 代码textrestringmatchstatusnginxlocation
2条回答

逃跑的问题?在

尝试以下操作之一:

  • 反斜杠加倍

    location ~* /a2aEx\\?.*$ {
    
  • 将regex放入引号中

    location ~* "/a2aEx\?.*$" {
    
  • 替换为字符类

    location ~* "/a2aEx[?].*$" {
    

你的正则表达式很好。问题在于Nginx如何检查传入的请求。在

Nginx将?之后的任何内容作为请求中的查询字符串。location块与示例中的$uri变量(/a2aEx)匹配。位置块不检查$args变量,这正是您试图匹配的对象。在

第二个示例正确匹配$uri变量。在

要对参数进行操作,可以使用Nginx的if运算符,但它是generally discouraged.

相关问题 更多 >