0

我有基于 URI 从数据库生成的页面。应有的功能,但是我无法设置我routes以从 URL 中消除控制器和功能。

$route['studios/(:any)'] = 'studios/location/$1';

现在,我有显示控制器名称和 URI 变量(无论是什么)的路线。但是,我也想删除控制器名称,只显示称为 URL 的 URI 变量。很难解释 - 希望有人能理解我的想法......

当前网址为:domain.com/studios/studio1

但我只想显示:domain.com/studio1

我试过$route['/(:any)'] = 'studios/location/$1';了,但这弄乱了我的整个网站。

帮助?

4

2 回答 2

1
$route['studios(/:any)*'] = 'studios/location';

这条路线将迫使一切从studioson 到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';
于 2013-10-02T23:07:43.527 回答
0

它是如何“弄乱您的网站”的?

在任何情况下,您都不应该在 (:any) 之前添加 /

只是:

$route['(:any)'] = 'studios/location/$1';

编辑:

在 $route['(:any)'] 之前,您需要为所有控制器指定路由;这很正常,不知道我是否称其为“高维护”,但您需要决定

于 2013-10-02T22:56:05.043 回答