【问题标题】:Url routing in Codeigniter 2Codeigniter 2 中的 URL 路由
【发布时间】:2015-09-14 13:45:32
【问题描述】:

我有http://example.com/blog/viewpost/1 之类的网址,我想更改http://example.com/1 之类的网址。我正在使用 codeigniter 2.x 框架,所以我更改了 routes.php 之类的,

$route['default_controller'] = "blog";
$route['/(:num)'] = 'blog/viewpost/$1';
$route['404_override'] = '';

我的控制器 blog.php,

public function viewpost($id)
    {

        $view['text'] = $this->blog_model->get_post_by_id($id);
        $view['maincategory'] = $this->blog_model->get_main_category();
        foreach ($view['text'] as $text){
            # code...
            $count = $text->views;
            $count = $count+1;
            $this->blog_model->popular_view($id,$count);   
        }
        $this->load->view('readmore',$view);
    }

当我执行程序时,url 没有改变。我在 codeigniter 框架中做过很多项目,但我以前从未做过 url 路由。所以我希望有人能帮助解决这个问题。

【问题讨论】:

  • 网址没有变化是什么意思?你除了urlhttp://example.com/1会自动改成http://example.com/blog/viewpost/1吗?还是只想显示http://example.com/blog/viewpost/1的内容?
  • 我想更改我的实际网址,例如http://example.com/1.. 而我的实际网址是http://example.com/blog/viewpost/1@Chayan
  • 路由在url 结构中不会产生任何可见的效果。它将http://example.com/1 url 视为http://example.com/blog/viewpost/1 并为您提供输出。所以你需要redirection 中的url
  • 谢谢@Chayan 我了解路由..

标签: php url-routing codeigniter-2


【解决方案1】:

您可以在文件“{root}/system/application/config/routes.php”中像$route['{default_controller}/{default_method}/(:num)'] = "{original_controller}/{original_method}/$1"; 一样路由。更多内容可以访问http://codesamplez.com/development/codeigniter-routes-tutorial

=========================

在您的“博客”控制器上添加以下代码。

public function _remap($method, $params = array()) {
    if ($method == 'viewpost') {
        $this->$method($params[0]);
    } else {
        $this->default_method();
    }
}

【讨论】:

  • @Astro 首先从“routes.php”中删除$route['/(:num)'] = 'blog/viewpost/$1';。然后添加代码,就像我更新了我的答案一样,检查一下。
  • 代码没问题。但我发现了 url 重定向中的问题。实际上我误解了 url 路由。现在我通过@Chayan 评论了解了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多