codeigniter默认控制器URL路由

时间:2012-08-13 06:02:42

标签: php codeigniter url-routing

我正在组建一个简单的网络网站,并希望网址与Facebook类似,因此输入domain.com/username我会得到一个用户个人资料。我已经可以这样做了

登录用户个人资料

domain.com/

其他用户资料

domain.com/home/username

默认控制器名为home,我目前正在使用_remap函数检查额外的url参数,以根据传递的内容显示不同的数据。

我的问题是如何将其映射出来以便我可以通过以下方式访问用户个人资料:

domain.com/username 

我可以使用routes.php设置吗? htaccess的?

3 个答案:

答案 0 :(得分:4)

您应该在config / routes.php中添加以下规则

// Profile Route
$route['(:any)'] = 'home/$1';

这会将您的所有请求重新路由到家庭控制器

因此domain/michelle将重新路由为domain/home/michelle 但在这种情况下,您的所有请求都将被重新路由到家庭控制器 例如。 domain/pages/about也会被重新发送到domain/home/pages/about,这是错误的。

domain/michelle => domain/home/michelle // TRUE
domain/pages/about => domain/home/pages/about // FALSE

所以你必须在Profile Route 之前为每个请求添加一个相同的规则, 例如。 $route['pages/(:any)'] = 'pages/$1';

把它们放在一起:

// Page Route 
$route['pages/(:any)']  = 'pages/$1'

// Last Profile Route
$route['(:any)'] = 'home/$1';

答案 1 :(得分:1)

这在Codeigniter中不是最简单的事情。 要做到这一点,首先需要定义您在routes.php中使用的所有路由以及需要添加行的文件末尾,这将向控制器发送所有其他请求以检查用户是否存在。

$route['stores/(:any)'] = 'stores/$1';
$route['pages/(:any)'] = 'pages/$1'; 

$route['(:any)'] = "home/$1"; //this route will return user's page

答案 2 :(得分:0)

您可以通过修改application / config文件中可用的routes.php文件来完成此操作。要了解有关routes.php的更多信息。这是链接URI routing in Codeigniter