2011-07-28 129 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