我有根据 URI 从数据库生成的页面。它可以正常工作,但是我无法设置
routes
以从 URL 中消除控制器和功能。
$route['studios/(:any)'] = 'studios/location/$1';
现在,我有显示控制器名称和 URI 变量(无论是什么)的路由。但是,我也想删除控制器名称,只显示称为 URL 的 URI 变量。
当前网址为:
domain.com/studios/studio1
但我只想显示:
domain.com/studio1
我尝试了
$route['/(:any)'] = 'studios/location/$1';
,但这搞乱了我的整个网站。
接下来我可以尝试什么?
$route['studios(/:any)*'] = 'studios/location';
这条路线将强制从
studios
到 studios/location
的所有内容。然后,您可以使用 URI 段访问任何参数:
$id = $this->uri->segment(2);
如果您的 URL 为
somewhere.com/studios/location/2
,则 $id
将解析为 2
但是,由于您希望它只是从根开始,因此您必须将覆盖路由放在路由文件的底部,以便最后对其进行评估:
// all other routes here. Which must be specifically
// defined if you want a catch all like the one you mentioned
$route['(:any)'] = 'studios/location';
或者,如果您想要一个高维护站点,您可以指定一组路由,如下所示:
$route['(studio1|studio2|studio3)'] = 'studios/location/$1';
它是如何“搞乱你的网站”的?
无论如何,(:any) 之前不应该有 /
只是:
$route['(:any)'] = 'studios/location/$1';
编辑:
在 $route['(:any)'] 之前,您需要指定所有控制器的路由;这是很正常的,不知道我是否会称之为“高维护”,但你需要决定