我有一套相當複雜的重寫規則,爲我的網站頁面提供了相當多的URL。眼下對付搜索結果的分頁我用2個重寫規則:Mod重寫可選參數
RewriteRule ^search/([0-9]+)$ /cgi-bin/search.pl?page=$1 [NC,L,QSA]
RewriteRule ^search$ /cgi-bin/search.pl [NC,L,QSA]
這些處理的URL,例如:
http://example.com/search
http://example.com/search/2
http://example.com/search/1000
我不知道如何將這些合併成1條重寫規則,以便search.pl腳本被正確調用,並且只有在指定頁面時才傳遞頁面參數。我知道這是一個非常基本的問題,但我似乎無法在任何地方找到答案。謝謝你的幫助!
看起來像前幾個答案在錯誤的方向會一點點。我正在考慮更多的重做正則表達式,以便頁面參數是可選的。可能類似於: RewriteRule^search(/([0-9] +))?$ /cgi-bin/search.pl?page=$1 [NC,L,QSA] 但它需要實際工作。 – 2009-11-06 15:58:34
@Russell C .:用'$ 2'替換'$ 1',因爲您想要第二個括號組的匹配。 – Gumbo 2009-11-06 16:03:53
對URL進行了兩個獨立的更改 - (1)轉到cgi-bin/search.pl,(2)如果有頁碼,則將其作爲參數傳遞。這是合乎邏輯的,因爲它是兩個RewriteRules。你爲什麼想要成爲一個? – 2009-11-06 22:00:40