如何从codeigniter中的url中删除所有控制器名称

时间:2015-12-18 10:47:45

标签: php codeigniter codeigniter-2

我在Codeigniter项目中有多个控制器。我需要隐藏这些控制器名称。例如:我有两个控制器,家庭和学校。每所学校都有自己的页面,其中包括约,画廊,联系等,网址应为http://www.sitename.com/schoolname。我使用routes.php隐藏家庭控制器。     $ route ['(:any)'] ='home / $ 1'; 但它显示学校控制器的错误。请帮帮我.....谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个

/bin:/usr/bin:/usr/local/bin

控制器名称是必需的,因此请使用您想要的任何名称进行设置

答案 1 :(得分:2)

绝对不需要控制器名称。

routes.php中首先将默认控制器定义为home(当用户访问主页sitename.com时)

$route['default_controller'] = 'home';

然后,您创建应将任何其他页面重定向到school控制器的规则:

$route['.*'] = 'school';

现在home.php控制器将如下所示:
    

class Home extends CI_Controller {

    public function Index()
    {
        echo "This is the homepage";
    }

}

school.php控制器中,您必须从请求的URL手动获取学校的名称:
    

class School extends CI_Controller {

    public function _remap()
    {
        echo "User requested school: " . $this->uri->segment(1);
    }

}

为什么要使用_remap方法?因为无论URL或路由中的内容如何,​​都会每次调用它。

来自the docs

  

如果你的控制器包含一个名为_remap()的方法,无论你的URI包含什么,它都会被调用。