路由问题 - Codeigniter

问题描述 投票:0回答:2

我有根据 URI 从数据库生成的页面。它可以正常工作,但是我无法设置

routes
以从 URL 中消除控制器和功能。

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

现在,我有显示控制器名称和 URI 变量(无论是什么)的路由。但是,我也想删除控制器名称,只显示称为 URL 的 URI 变量。

当前网址为:

domain.com/studios/studio1

但我只想显示:

 domain.com/studio1

我尝试了

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

接下来我可以尝试什么?

php codeigniter
2个回答
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';

0
投票

它是如何“搞乱你的网站”的?

无论如何,(:any) 之前不应该有 /

只是:

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

编辑:

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

© www.soinside.com 2019 - 2024. All rights reserved.