php – Codeigniter中的路由 – 自动
我有Codeigniter路线的问题.我希望我网站上的所有注册用户都有自己的“目录”,例如:www.example.com/username1,www.example.com/username2.该“目录”应映射到控制器“polica”,方法“ogled”,参数“username1”.
如果我喜欢这样,那么每个控制器都映射到这条路线:“polica / ogled / parameter”.不行: $route["(:any)"] = "polica/ogled/$1"; 这有效,但我总是在routes.php中手动输入信息: $route["username1"] = "polica/ogled/username1"; 我如何做到这一点,这将自动化? 更新: 我的当前routes.php: $route['oglasi'] = 'oglasi'; $route['(:any)'] = "polica/ogled/$1" $route['default_controller'] = 'domov'; $route['404_override'] = ''; 我解决了这段代码的问题: $route['oglasi/(:any)'] = 'oglasi/$1'; $route['(:any)'] = "polica/ogled/$1" $route['default_controller'] = 'domov'; $route['404_override'] = ''; 此致,马里奥
你的路线的问题是,通过使用:任何你匹配,实际上…任何路线,所以你几乎卡在那里.
我想你可能有两个解决方案: 1)您可以选择性地重新路由所有站点控制器,例如: $route['aboutus'] = "aboutus"; $route['where-we-are'] = "whereweare"; //And do this for all your site's controllers //Finally: $route['(:any)'] = "polica/ogled/$1"; 所有这些路线必须在任何之前出现,因为它们按照它们出现的顺序被读取,并且如果你放置:任何在开头它将很乐意跳过所有其余的路线. 评论后编辑: 我的意思是,如果您要与任何段匹配,这意味着您根本不能使用任何控制器(默认情况下,这是第一个URI段),因为路由器将始终使用您的路由器重新路由您定义的法律. 我知道这仍然是代码冗长,但正如你所说,它们肯定会低于6K. /结束编辑 这不是一个实用的解决方案,因为它需要大量的代码,但是如果你想要这样的设计,这是我想到的唯一方法. 要么 2)你可以稍微改变你的设计模式,并为用户名分配另一条路线,这是一条沿线的 $route['user/(:any)'] = "polica/ogled/$1"; 这将产生相当漂亮(和语义)的URL,并且将避免逃避其他路由的所有麻烦. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |