如何在codeigniter中更改查询字符串以分段url?

时间:2015-06-05 11:28:28

标签: php .htaccess codeigniter

你好所有

这是我的第一个问题,希望你们都能理解我的问题,帮助我......

所以这就是我正在处理基于体育社区 CODEIGNITER )的应用程序的问题,所以当登录用户点击时在团队名称或体育页面上重定向到特定团队页面,网址如下所示

http://localhost/project/home?cat_id=MjY=&cat_type=Mg==

其中cat_id和cat_type位于base64encode()

我想让它seo友好..我已经尝试过这个链接

How to Convert Query String to Segment URI? 但没有任何事情可以让任何人帮助我PLZ

当前网址为localhost/project/home?cat_id=MjY=&cat_type=Mg==

所需的网址localhost/project/home/team-category

提前感谢.....

1 个答案:

答案 0 :(得分:2)

基本上你在寻找什么是基于slug的URL(Semantic URLs

<小时/> 那么如何实施slug?

将用一个例子解释:
网址 - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/

1)假设您有产品页面和产品页面需要URL中的一些数据来了解要显示的产品。
2)在我们使用id查询我们的数据库之前,我们从URL获取。但是现在我们要做同样的事情(查询我们的数据库),只需用id取代slug就可以了! 3)因此在数据库中添加名为slug的附加列。下面是您更新的产品数据库结构(仅作为示例)。

Columns                       Values

id (int(11), PK)              1
title (varchar(1000))         Apple iPhone 5S 16GB
slug (varchar(1000))          apple-iphone-5S-16GB-brand-new
price (varchar(15))           48000
thumbnail (varchar(255))      apple-iphone-5S-16GB-brand-new.jpg
description (text)            blah blah
...
...

为此,您必须在下面进行更改 -

1)创建以下2个表格

slug_table:

id (PK)   |    slug    |   category_id (FK)


category_table:

id (PK)   |  title  |  thumbnail  |  description


2)config / routes.php

$route['/products/(:any)'] = "category/index/$1";


3)models / category_model.php

class Category_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->db = $this->load->database('default',true);
    }

    public function get_slug($slug)
    {
        $query = $this->db->get_where('slug_table', array('slug' => $slug));

        if($query->num_rows() > 0)
            return $query->row();
        return false;
    }

    public function get_category($id)
    {
        $query = $this->db->get_where('category_table', array('id' => $id));

        if($query->num_rows() > 0)
            return $query->row();
        return false;
    }
}


4)controllers / category.php

class Category extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('category_model');
    }

    public function index($slug)
    {
        $sl = $this->category_model->get_slug($slug);

        if($sl)
        {
             $data['category'] = $this->category_model->get_category($sl->category_id);
             $this->load->view('category_detail', $data);
        }
        else
        {
             // 404 Page Not Found
        }
    }
}


5)views / category_detail.php

<label>Category title: <?php echo $category->title; ?></label><br>
</label>Category description: <?php echo $category->description; ?></label>

<小时/> 我之前也曾回答过slu。检查是否有帮助。
How to remove params from url codeigniter