【问题标题】:Removing controller function name from URL in Codeigniter. Error when multiple controller从 Codeigniter 中的 URL 中删除控制器函数名称。多个控制器时出错
【发布时间】:2015-05-06 17:54:03
【问题描述】:

如何使用 CI 路由到具有任何方法名称的特定控制器。 我有两个控制器:init 和 cms。然后在 config.routes.php 中:

 $default_controller = "init";  //default controller
 $controller_exceptions = array('admin','forums');

 $route['default_controller'] = $default_controller;
 $route["^((?!\b".implode('\b|\b', $controller_exceptions)."\b).*)$"] = $default_controller.'/$1';
 $route['404_override'] = '';

 $route['backend'] = 'cms';
 $route['backend/(:any)'] = "cms/product";  

当输入后端/产品时,我希望它路由到后端/产品。再次输入后端/登录时,我希望它路由到后端/登录。这意味着我需要的是$route['backend/anyMethodNameAfterbackend'] = "cms/anyMethodNameAfterbackend";

【问题讨论】:

    标签: php codeigniter url routing config


    【解决方案1】:

    而不是$route['backend/(:any)'] = "cms/product"; 使用$route['cms/(:any)'] = "cms/$1"; 结果将是:

    $route['backend'] = 'cms';
    $route['backend/(:any)'] = "cms/$1";
    

    【讨论】:

    • 它不工作。我也这样做了。登录我的网站的真实路径是。 localhost/c2c/index.php/cms. This has login form with action form_open('cms/login')。我输入了 localhost/c2c/backend 然后页面打开,但尝试登录时抛出 404 错误。
    • 那么,试试form_open(base_url().'cms/login') 或form_open('/cms/login')。
    • 还是不行。尝试登录时。按登录然后我的网址变成localhost/c2c/cms/login 而不是localhost/c2c/backend/login
    • 那是一样的。您还有另一个问题,与路由无关。如果您将'/cms/login' 更改为'/backend/login',则uri 将正确,但页面将显示相同的错误。你的 cms 控制器是什么样的?
    • cms 控制器很简单,包含功能。我记得我通过配置 htaccess 删除了要写入 url 的控制器名称。有问题吗
    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 2011-08-04
    • 2014-12-16
    • 2018-01-10
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多