0

我想为 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值。

4

2 回答 2

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)

于 2013-03-14T04:35:42.480 回答
0

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

^/cgi

..将不匹配ip/cgi,因为ip在开始时..不是/cgi。修复它..放在ip你所拥有的前面:

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

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

正则表达式输出

于 2013-03-14T03:34:04.347 回答