codeigniter中的友好URL与url中的变量

时间:2011-05-08 17:41:05

标签: codeigniter friendly-url

我正在使用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并正在开发我的第一个项目

1 个答案:

答案 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的方法,该方法当然不存在。

请参阅URI Routing for further info