codeigniter干净的网址,但传递变量动态构建页面

时间:2013-04-15 17:39:56

标签: codeigniter codeigniter-2

据我所知,在像wordpress这样的CMS中,所有页面都是通过url发送变量动态构建的,然后将url简化为www.example.com/my-first-blog-post/。我假设它发送了帖子ID并且不仅仅依赖于博客帖子的网址名称。

使用codeigniter,我有我的博客控制器和我的博客模板设置,但是我不确定如何实现像wordpress这样的东西。我需要有一个像www.example.com/my-first-blog/12/这样的网址才能传递帖子的ID。有没有办法隐藏12或我是否通过它的网址名称搜索博客文章?

2 个答案:

答案 0 :(得分:0)

您可以使用网址片段进行发帖查询。 (这些my-first-post类似的字符串通常称为slugs)。您必须预先生成这些并将其与帖子一起保存。

您可以使用路由配置的$route['404_override']将每个不可路由的路径指向控制器。一旦你有了这个设置,你将不得不查询blogposts参数,如果找到它提供发布内容,如果没有发出常规404.这样的事情:

// application/config/routes.php
$route['404_override'] = 'blog/show_post'; // controller/action

// application/controllers/blog.php
class Blog extrends CI_Controller {
    public function show_post() {
        // get the first segment, the "first-post" from http://example.com/first-post
        $slug = $this->uri->segment(0); 
        $post = $this->posts->find_by_slug($slug); // imaginary posts model with db query
        if (!$post) { // if the post not found by slug
            show_404(); // return 404 as usual
        } else {
            $this->load->view('blog/show', array($post)); // post found, display it
        }
    }
}

答案 1 :(得分:0)

您可以使用网址片段进行发帖查询。 (这些我的第一篇文章通常称为slugs)。您必须预先生成这些并将其与帖子一起保存。

您可以使用路由配置的$ route [' 404_override']将每个不可路由的路径指向控制器。设置完成后,您必须使用blogposts的参数进行查询,如果发现了该帖子的内容,如果没有发送常规的404.这样的内容:阅读这篇文章 http://www.obatkesehatanalami.com