I need to write a CI route so that it loads the right controller. What I want to do is write a route that excludes the “features” controller. Here are my routes (but the first one doesn’t work).
$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
What I want to have happen is the top line should load any controller that is not the features controller. But I am getting conflicts between the two lines. I’ve tried placing the “!features” in a couple of different places in the line, with and without quotes and I’m still getting either the features controller to load or one of the other methods in the products controller to load. But not both. Can someone help out here? Thanks.
Try changing the first line to:
(?!foo)is a negative lookahead, if fails if whatever is following it matchesfoo.$means end of string, and is there to make sure thatfeaturesis not part of a longer word.