2010-05-14 498 views
0

我有重寫規則有問題如何寫htaccess文件重寫規則

我的鏈接 是www.something /組/ GROUP_ID /位/組名 此 rewriteBase/

RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L] 

有時候我的網址可能會來自www.something/group/group_id/groupName。

在這兩種情況下,我必須重寫到group.php,我只需要groupid。如何編寫重寫規則以在這兩種情況下工作?

回答

0

可以使用惰性量詞或防止每個匹配組匹配/本身。您目前的方式是,第一組將盡可能匹配,從而導致不需要的結果。

RewriteRule ^group/(.*?)/(.*?)/(.*?)$ /group.php?gid=$1 [QSA,NC,L] 
RewriteRule ^group/([^\/]*)/([^\/]*)/([^\/]*)$ /group.php?gid=$1 [QSA,NC,L] 

一個更好的方法,讓人們省去了不必要的部分(讀:不是需要評估在服務器端的結果),你甚至可以做這樣的事情:

RewriteRule ^group/(\d+)(/.*)?$ /group.php?gid=$1 [QSA,NC,L] 

(這是基於你的組ID是一個數字的假設)

+0

感謝戳。這是工作。我應用了你最後的建議 – roopesh 2010-05-14 11:32:43

0

試試這個:

^group/(.+)(/|/.+)*$ 


www.something /組/ GROUP_ID /地方匹配/組名
www.something /組/ GROUP_ID /組名

我從來沒用過RewriteRule,所以沒有經過測試。也許如果您將「正則表達式」標記添加到您的問題中,您將得到更多答案;-)