自定义CodeIgniter路由正则表达式

时间:2013-05-13 16:15:33

标签: regex codeigniter routes clean-urls

尝试改进我创建的自定义codeigniter路由正则表达式。本质上,自定义路由的目的是为客户端配置文件页面创建一个更清晰/更短的URL,其格式为clients/client-slug,例如:clients/acme-inc。我只希望这条路线匹配,如果它们在客户端段塞段之后没有其他段,并且它们的客户端段塞值与任何与“客户端”控制器中的实际方法/路由相对应的“保留”值都不匹配。目前,这就是我正在使用的:

$route['clients/(?!some_method|another_method|foo|bar)(.+)'] = 'clients/index/$1';

除了当一个客户端slug以一个保留方法文本开头,即clients/food-co,因为它有clients/foo,自定义路由是不匹配。所以我需要基本上有条件地允许路由包含该集合中的任何保留方法,如果它后跟其他字符(不是/)。

2 个答案:

答案 0 :(得分:2)

你试试这个吗?

$route['clients/(?!(?:some_method|another_method|foo|bar)(?:/|$))(.+)'] = 'clients/index/$1';

答案 1 :(得分:0)

您将来应该考虑使用_remap()方法。它允许您更新控制器并添加新方法而无需更新路由(只要您的URI与控制器名称匹配,您实际上根本不需要路由)。