codeigniter - 路由不存在的URI

时间:2014-07-03 18:16:57

标签: php codeigniter url-rewriting routing

所以在这个codeigniter安装中,我有一个名为user的控制器。在index()我接受一个user_name并显示该用户的个人资料。

class User extends CI_Controller
{
  function index($user_name)
  {
    //show user profile...
  }
}

这很好用。但是,要查看个人资料,访问者必须访问:<site>/user/john_doe

我希望网址为<site>/john_doe。我知道使用controller/function/arg的默认codeigniter设置无法做到这一点。我可以在routes中对此进行映射,以便在访问者键入<site>/john_doe时,系统会识别出没有名为john_doe的控制器,它会在内部呈现<site>/user/john_doe(但它应保留原始版本)短网址

此外,如果用户创建一个名为user的用户名已经是一个有效的控制器,会产生副作用...但我猜这是次要问题(可以将所有控制器名称作为关键字阻止,因此用户不能注册其中一个)

1 个答案:

答案 0 :(得分:1)

您可以将以下规则放在路由文件的底部。

$route['/(:any)'] = "/user/index/$1";

将此规则放在底部是绝对重要的。如果你把它放在最上面,你输入的所有URL都将匹配用户/索引控制器。