他们正在尝试创建网址,其中第一个网段是用户,第二个网站是他的文件,例如:www.exemplo.com/joao/ball
控制器
public function user() {
$user_url = $this->uri->segment(1);
}
^^这将返回每个文件的配置文件:www.exemplo.com/joao
public function arquivo() {
$arquivo_url = $this->uri->segment(2);
}
^^此特定文件:www.exemplo.com/joao/bola
路线
$route['(:any)'] = 'home/user/$1';
$route['??'] = 'home/arquivo/$1';
答案 0 :(得分:0)
要解决您的问题,您应该使用这样的路线..
$route['(:any)/(:any)'] = 'home/arquivo';
$route['(:any)'] = 'home/user';
但是就你的项目而言,这种类型的路由将给你带来一些困难。我建议你使用显式路由名称,因为(:any)
引用任何东西都可以通过这个URL。
答案 1 :(得分:0)
您可以使用routes将URI及其参数映射到相关功能。 CodeIgniter路由的行为有所不同,具体取决于CI的版本。
在CodeIgniter 2.2.0中(:any)
是equivalent to the regex, .+
- 匹配任何一个或多个字符(不包括换行符);在3.0和当前开发版本中它是equivalent to [^/]+
- 一个或多个任何字符,不包括换行符。
后者在这种情况下更有用,因为您要识别两个参数(由正斜杠分隔)。
在2.2.0中:
$route['([^/]+)/([^/]+)'] = 'home/arquivo/$1/$2';
$route['(:any)'] = 'home/user/$1';
在3.0中:
$route['(:any)/(:any)'] = 'home/arquivo/$1/$2';
$route['(:any)'] = 'home/user/$1';
控制器函数通常会将URI参数作为函数参数传递,如下所示:
public function user($user)
{
// Show the user's profile
}
public function arquivo($user, $file)
{
// Show the file for the user
}
答案 2 :(得分:0)
能够使用以下代码解决。
$route['([^/]+)'] = 'home/user/$1';
$route['(:any)/(:any)'] = 'home/arquivo/$1';