我想对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
值。
答案 0 :(得分:0)
您的问题是因为您在输入开始时进行了锚定。
^/cgi
..与ip/cgi
不符,因为ip
位于开头..不是/cgi
。要解决它..把ip
放在你所拥有的面前:
^ip/cgi/([^/]+)\/(.*)?
# ^^ this part
以下是进行更改后的输出:
答案 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)