2013-03-14 75 views
0

我想使用url rewrite for linux lighttpd.conf但我無法獲得正確的正則表達式。REGULAR EXPRESSION(url.rewrite)

我的網址是ip/cgi/aaa/bbb,我想重寫url路徑。我的目標是/var/www/cgi/aaa.cgi?par=bbb

我寫的規則爲"^/cgi/([^/]+)\/(.*)?"=> "/var/www/cgi/$1.cgi?par=$2"
但不知何故,我不能得到的參數par值。

回答

0

你的問題是因爲你在輸入的開始處錨定。

^/cgi 

..will不匹配ip/cgi,因爲ip處於起步..不/cgi。要修復它。把ip在你有什麼正面:

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

下面是輸出一旦更改:

Regex output

+0

但ip是不同的,我怎麼寫規則 – MagicConch 2013-03-14 03:41:19

+0

刪除錨字符'^'..它可能會工作後那。 – 2013-03-14 03:44:40

+0

但我用我的規則「^/cgi /([^/]+)\/(.*)?」=>「/var/www/cgi/$1.cgi?par=$2」,我可以去CGI但我不能得到票面價值 – MagicConch 2013-03-14 03:47:59

0

「^」在字符串的開頭匹配。由於您的ip是動態的,因此嘗試從「cgi」進行匹配,因爲它是絕對的。

我試着在http://gskinner.com/RegExr/的輸入下面工作正常。

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

結果是IP /無功/網絡/ 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)