代码点火器中的自定义路由被覆盖



我有这些路由:

$route['shop/(:any)/(:any)'] = 'product/category_listing/$1/$2';
$route['shop/(:any)/(:any)/(:any)'] = 'product/product_listing/$1/$2/$3';

当我调用url:

http://mysite.com/shop/mens/trainers/a-product

应该调用product_listing方法,但第一个方法(category_listing)被调用,而product_listing从未被调用。

我怎样才能使它按要求工作?

数组元素顺序重要!

关键字(:any)匹配所有内容,甚至斜杠,因此在您的示例中,CodeIgniter找到第一个匹配路由,并且不再查找任何进一步的路由。

那么,如果我们这样做:

$route['shop/(:any)/(:any)/(:any)'] = 'product/product_listing/$1/$2/$3';
$route['shop/(:any)/(:any)'] = 'product/category_listing/$1/$2';

…然后首先匹配产品列表,然后是其他所有内容。

甚至,您可以使用正则表达式(例如([a-z0-9]+))来创建您需要的规则

最新更新