php - 如何在 codeigniter 中将查询字符串更改为段 url?

标签 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? 但是什么也没发生,有人能帮我吗

当前 url 是 localhost/project/home?cat_id=MjY=&cat_type=Mg==

所需的 url localhost/project/home/team-category

提前致谢......

最佳答案

基本上您要查找的是基于 slug 的 URL ( Semantic URLs )


那么slug如何实现呢?

举例说明:
网址 - http://www.example.com/products/apple-iphone-5S-16GB-brand-new/

1) 假设您有一个产品页面,当然产品页面需要一些来自 URL 的数据来了解要显示的产品。
2) 在我们使用从 URL 获取的 id 查询数据库之前。但是现在我们将做同样的事情(查询我们的数据库),只需将 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>


我之前也回答过slug。检查是否有帮助。
How to remove params from url codeigniter

关于php - 如何在 codeigniter 中将查询字符串更改为段 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30665388/

相关文章:

php - 从php中的字符串替换br标签

php - 在 WordPress 中回显 PHP 中的 HTML

php - 如何在运行 ubuntu 的 amazon ec2 中启用 .htaccess

php - .Htaccess Url 重写将 %20(空格)替换为 "-"

php - codeigniter - 包含许多类的最佳实践库

mysql - Codeigniter 中的零 (0) 数据库结果

php - 无法显示从 AES_DECRYPT 检索到的特殊字符

Magento 中的 PHP openID 集成

php - 计算另一个表中的行

php - PHP 路由之谜