【问题标题】:Can't load controller because of routing由于路由,无法加载控制器
【发布时间】:2010-12-28 15:03:16
【问题描述】:

我希望当用户输入 url.com/username 时,会显示个人资料页面。我在 routes.php 文件中进行了设置:

$route['(:any)'] = "users/profile/$1";

但是现在当我想调用登录​​控制器 (url.com/login/) 时,我也被重定向到用户页面 (url.com/users/profile/login) 而不是登录控制器。

有人对此有解决方案吗?

【问题讨论】:

    标签: codeigniter routing uri


    【解决方案1】:

    您必须在 (:any) 之前路由所有其他页面。

    $route['login'] = "login";
    $route['(:any)'] = "users/profile/$1";
    

    【讨论】:

    • 谢谢,还有更简单的方法吗?似乎每个页面都需要做很多工作。
    • 通过使用 $route['(:any)'],您不得不明确说明您不想路由哪些页面。解决这个问题的唯一方法是执行类似 $route['users/(:any)']... 的操作,但这不符合您对 url.com/username 的需求。
    • TerryMatula 是对的。使用 $route['(:any)'] 没有简单的方法可以做到这一点。您必须路由所有控制器。但是,如果您的控制器中有不止一种方法(例如 login/index、login/index2 等),请使用 $route['login/(:any)'] = "login/$1";
    • 您可以在字符串中有一个标准部分,例如 /site/login、/site/something、/site/other 等,然后您只需要处理站点。这意味着没有人可以拥有“站点”的用户名。这也将允许您稍后添加细分,而不必担心人们使用该名称创建了用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多