2011-07-28 174 views
0

我需要編寫一個CI路由,以便加載正確的控制器。我想要做的是寫一個排除「功能」控制器的路線。這裏是我的路線(但第一個不工作)。CodeIgniter路由

$route['(\w{2})/(\w{2})/products/([\w]+!features)'] = "products/products/$3"; // folder/controller/method 
$route['(\w{2})/(\w{2})/products/features/([\w]+)'] = "products/features/$3"; // folder/controller/method 

我想要發生的是頂線應加載任何不是功能控制器的控制器。但是我在兩條線之間發生衝突。我已經嘗試將「!功能」放置在行中的幾個不同位置,帶引號和不帶引號,並且我仍然獲取要裝入的功能控制器或者要裝入的產品控制器中的其他方法之一。但不是兩個。有人可以幫忙嗎?謝謝。

回答

1

嘗試更改第一行:

$route['(\w{2})/(\w{2})/products/(?!features$)(\w+)'] = "products/products/$3"; 
  • (?!foo)是負先行,如果要是無論是跟隨它匹配foo失敗。
  • $意味着字符串的結尾,並且確保features不是長字的一部分。
+0

\ b是什麼意思?這工作正常。 – sehummel

+0

'\ b'是一個字的邊界,它匹配'\ w'和'\ W'之間的位置,但是我將它改爲'$',因爲這看起來更適合這種情況。 PS:我不知道CI,所以我不確定你是否應該通過將它們放在'^'和'$' – Qtax