正则表达式(url.rewrite)

时间:2013-03-14 03:13:10

标签: regex linux

我想对linux lighttpd.conf使用url rewrite,但我无法获得正确的正则表达式。

我的网址是ip/cgi/aaa/bbb,我想重写网址路径。我的目标是/var/www/cgi/aaa.cgi?par=bbb

我将规则写为"^/cgi/([^/]+)\/(.*)?"=> "/var/www/cgi/$1.cgi?par=$2"
但不知怎的,我无法获得参数par值。

2 个答案:

答案 0 :(得分:0)

您的问题是因为您在输入开始时进行了锚定。

^/cgi

..与ip/cgi不符,因为ip位于开头..不是/cgi。要解决它..把ip放在你所拥有的面前:

 ^ip/cgi/([^/]+)\/(.*)?
# ^^ this part

以下是进行更改后的输出:

Regex output

答案 1 :(得分:0)

“^”匹配字符串的开头。由于您的IP是动态的,请尝试匹配“cgi”,因为它是绝对的。

我在http://gskinner.com/RegExr/处尝试了以下输入并且工作正常。

/cgi/([^/]+)\/(.*)? 
/var/www/cgi/$1.cgi?par=$2
ip/cgi/aaa/bbb

结果是ip / var / www / cgi / aaa.cgi?par = bbb

如果您不想在结果字符串中使用“ip”,请使用

(.*)/cgi/([^/]+)\/(.*)?
/var/www/cgi/$2.cgi?par=$3
ip/cgi/aaa/bbb

结果是/var/www/cgi/aaa.cgi?par=bbb(没有ip)