Regex nginx位置中的匹配子字符串

Regex nginx位置中的匹配子字符串,regex,nginx,location,Regex,Nginx,Location,我正在使用nginx 1.4.3,并尝试在长url中匹配长字符串或子字符串,如下所示: 没有任何正则表达式的长url location ~* /index.php?/english/Kbase/Article/IRS { proxy_pass http://backend; proxy_cache kbase-cache; <...> } 结果:效果很好 结果:效果很好 示例1、

我正在使用nginx 1.4.3,并尝试在长url中匹配长字符串或子字符串,如下所示:

  • 没有任何正则表达式的长url

    location ~* /index.php?/english/Kbase/Article/IRS {
                proxy_pass         http://backend;
                proxy_cache        kbase-cache;
                <...>
    }
    
    结果:效果很好

  • 结果:效果很好

  • 示例1、2、3:我尝试了所有变体,以至少匹配substring.Article。, 它甚至不起作用。*IRS不起作用,但第四个例子很好

    我是不是错过了什么?请告知。

    缺少必须终止正则表达式的$符号

    例如

    一定是

    location ~* /idx/index.php\?/Kbase/branch/Article/\d+.*$  {
    

    表示前面的
    p
    是可选的。你的意思是文字
    ?你需要逃出它(
    \?
    )。是的,即使我逃出\?还是不匹配。即使是最简单的表单位置~*IRS${return 410;}也不起作用。我遗漏了什么?不,它没有,
    $
    只是意味着它必须匹配字符串的结尾。请仔细阅读regex特殊符号,如
    ^
    $
    location ~* /idx/index.php?/Tickets/Ticket/ListAll/[\d,]*/6/[\d,]*/[\d,]*.*   {
                proxy_pass         http://backend;
                <....>
    }
    
    location ~* \.(jpg|jpeg|gif|png)$ {
                root /opt/httpdocs;            
    }
    
    location / {
                proxy_pass         http://backend;
    }
    
    location ~* /idx/index.php\?/Kbase/branch/Article/\d+.*  {
    
    location ~* /idx/index.php\?/Kbase/branch/Article/\d+.*$  {