我正在使用nginx 1.4.3并尝试在长网址中匹配长字符串或子字符串,如下所示:
没有任何正则表达式的长网址
location ~* /index.php?/english/Kbase/Article/IRS {
proxy_pass http://backend;
proxy_cache kbase-cache;
<...>
}
结果:没有匹配,但这样的网址存在。
带有正则表达式的长网址
location ~* /idx/index.php?/Kbase/branch/Article/\d+.* {
proxy_pass http://backend;
<....>
}
结果:没有匹配
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;
}
结果:工作正常。
示例1,2,3:我尝试了所有变体以匹配至少substring。 Article。, 它甚至不起作用。* IRS不起作用,但第四个例子工作正常。
我错过了什么或什么?请指教。
答案 0 :(得分:0)
你错过了必须终止正则表达式的$符号。
E.g。
location ~* /idx/index.php\?/Kbase/branch/Article/\d+.* {
必须是
location ~* /idx/index.php\?/Kbase/branch/Article/\d+.*$ {