我有一个CI routes.php ,如下所示。
$route['default_controller'] = "site";
$route['404_override'] = 'site';
$route['admin'] = 'admin';
$route[':any'] = 'site/user';
所需要的是当任何用户名(我将使用数据库检查)使用类似 - localhost/CIproj/username
的URL键入时,它应该转到site/user
控制器。
如果' - localhost/CIproj/admin
之类的网址中有'admin',它将转到admin
控制器(索引函数)。网址将更改为localhost/CIproj/admin/dashboard
。
所以我得到的错误是当我去localhost/CIproj/admin
时,我得到了登录屏幕。但登录后,它将转到admin/dashboard
。这是我被重定向到site/user
的地方。
然后我尝试了下面的一个。
$route['user/(:any)'] = 'site/user';
现在一切正常。但是网址就像 - localhost/CIproj/user/username
。
所以问题是,有没有办法我不必在URL中写user
。访问者可以在URL中键入任何内容。
localhost/CIproj/anything
如果anything== username from database
它将转到site/user
。
如果anything== admin or any of its page
它将转到相应的控制器。
或者 404pagenotfound.php 。
注意:Admin是一个包含许多控制器的庞大模块。所以我认为我不应该在这里为每个管理控制器编写路由。
答案 0 :(得分:2)
对于网站用户,您可以使用以下内容:
$route['(:any)'] = 'site/user/$1';
在这里,您将获得$ 1作为用户名的参数,您的网址将如下所示:
localhost/CIproj/anything
答案 1 :(得分:1)
只是坐在空白处。再次通过问题,找到了解决方案。 所以问题是,有什么方法我不必在URL中写用户。访问者可以在URL中输入任何内容。
本地主机/ CIproj /任何
如果anything== username from database
它将转到site/user
。
如果anything== admin or any of its page
它将转到相应的管理员控制器。
或者404pagenotfound.php
。
route.php将是这样的 - >
$route['default_controller'] = "site"; // controller - site / method - index (404 page).
$route['404_override'] = 'site'; // same as above
$route['(iam:any)'] = 'site/user/$1'; // appending 'iam' to anything user enters. then in 'site' controller and 'user' method I will remove 'iam' from the segment and then check with database username. if found it will proceed to respective user page or else 404 page.
答案 2 :(得分:0)
这是我加载路线https://github.com/EllisLab/CodeIgniter/wiki/Dreamhost-.htaccess
的方式$route['step_1'] = "install/step_1/index";
$route['step_2'] = "install/step_2/index";
$route['step_3'] = "install/step_3/index";
$route['step_4'] = "install/step_4/index";