我想为 linux 使用 url rewrite,lighttpd.conf
但我无法获得正确的正则表达式。
我的网址是 ip/cgi/aaa/bbb
,我想重写 url 路径。我的目标是/var/www/cgi/aaa.cgi?par=bbb
我将规则写为"^/cgi/([^/]+)\/(.*)?"=> "/var/www/cgi/$1.cgi?par=$2"
但不知何故我无法获得参数par
值。
"^" 匹配字符串的开头。由于您的 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)
您的问题是因为您在输入开始时锚定。
^/cgi
..将不匹配ip/cgi
,因为ip
在开始时..不是/cgi
。修复它..放在ip
你所拥有的前面:
^ip/cgi/([^/]+)\/(.*)?
# ^^ this part
以下是进行更改后的输出: