我正在使用Codeigniter制作网站,特定产品页面的网址类似于http://www.domain.com/products/display/ $ category_id / $ product_id / $ offset
$ offset用于限制使用Codeigniter的分页库时每页显示的页数。
我想如何使我的网址更加人性化,例如http://www.domain.com/ $ category_name / $ product_name / $ offset ie。 http://www.domain.com/weapons/proton-canon/3
有人能指出一般方法吗?我刚开始学习codeigniter并正在开发我的第一个项目
答案 0 :(得分:2)
您可以使用通常称为URL slug来实现此目的。
在表格中添加一个名为“url_slug”或类似字段的新字段。现在,您需要为每个产品创建一个slug,并将其存储在此字段中。
CI在URL帮助程序中有一个函数 - url_title($string)
,它将接受一个字符串,并将其转换为在URL中使用。
例如,My product name
将成为my_product_name
。
现在,在您的方法中,您可以 - 保持product_id
完好无损,将此作为方法的参数来显示特定产品,并将slug用于人性友好链接,或者您可以使用url_slug
引用产品。
您的网址可能如下所示:
www.domain.com/$category_name/$product_id/my_cool_product/$offset
或者看起来像
www.domain.com/$category_name/my_cool_product/$offset
没有身份证明。选择是你的,但url_slug可能会改变 - ID不会。这可能会产生SEO影响。
无论如何,您的方法需要看起来像:
function display_product($product_id, $url_slug, $offset) {
// do what you gotta do...
}
然后您可以像上面一样使用URL。
您还需要使用URI路由,因为上面的示例将尝试查找名为$category_name
的控制器和名为my_cool_product
的方法,该方法当然不存在。