CodeIgniter中的动态控制器

时间:2014-08-27 11:43:02

标签: codeigniter

我正在创建一个新网站,从网站上加载所有主类和子类。我也测试了导航,即,如果我点击任何主类别,它完全加载所有相应的子类别,没有任何问题。但是,目前我通过在URL中传递查询字符串来实现此目的。例如

http://localhost/MyController?id=32145

我们假设id 32145代表主类别,即关于我们'。我的问题是如何将上述URL更改为:

http://localhost/Aboutus

如果关于我们下有任何子类别,则应显示为:

http://localhost/Aboutus/Mission

请帮助我,因为我真的遇到了这个问题。

2 个答案:

答案 0 :(得分:0)

默认情况下CodeIgniter使用基于段的方法,您可以像问题的第二部分一样进行URL路由 - "如果在关于我们的情况下有任何子类别"

$route['product/(:any)'] = "catalog/product_lookup";

更多信息:https://ellislab.com/codeigniter/user-guide/general/routing.html

但是如果你想重写完整的URL,你应该检查.htaccess重写

答案 1 :(得分:0)

这不容易,一次迁移。

  1. 在数据库中,您可以存储产品的新控制器/网址(如果尚未存在)
  2. 创建新的控制器
  3. 将旧Url重定向到New Url的路由控制器 控制器
  4. 将旧网址路由到路由控制器
  5. 路由控制器是这样的:

        public function old_url($aProdId) {
            if (is_null($aProdId)) {
                // error cannot be null
            }
    
            $NewUrl = $this->new_url_model->getNewUrl($aProdId);
    
            if (!$NewUrl) {
                // error new url not exist
                return;
            }
            redirect(base_url($NewUrl), 'refresh');
        }