1

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

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

这通常可以正常工作,除非有一个以保留方法文本之一开头的 client-slug,即clients/food-co,因为它包含clients/foo在其中,所以自定义路由不匹配。所以我需要基本上有条件地允许路由包含该集合中的任何保留方法,前提是它后面跟着附加字符(不是 a /)。

4

2 回答 2

2

你试试这个?

$route['clients/(?!(?:some_method|another_method|foo|bar)(?:/|$))(.+)'] = 'clients/index/$1';
于 2013-05-13T16:22:08.650 回答
0

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

于 2013-05-13T22:21:29.690 回答