codeigniter 中的友好 url,带有 url 中的变量
Posted
技术标签:
【中文标题】codeigniter 中的友好 url,带有 url 中的变量【英文标题】:friendly url in codeigniter with variables in url 【发布时间】:2011-08-21 05:01:09 【问题描述】:我正在使用 Codeigniter 创建一个网站,我的特定产品页面的 URL 类似于 http://www.domain.com/products/display/$category_id/$product_id/$offset
$offset 用于限制使用 Codeigniter 的分页库时每页显示的页数。
我希望如何使我的 URL 更加人性化,例如 http://www.domain.com/$category_name/$product_name/$offset 即。 http://www.domain.com/weapons/proton-canon/3
谁能指出我的一般方法?我刚开始学习 codeigniter,正在做我的第一个项目
【问题讨论】:
【参考方案1】:您可以使用通常称为 URL slug 的方法来实现此目的。
在您的表中添加一个名为“url_slug”或类似名称的新字段。现在您需要为每个产品创建一个 slug,并将其存储在此字段中。
CI 在 URL 帮助器中有一个函数 - url_title($string)
,它将接受一个字符串,并将其转换为在 URL 中使用。
例如,My product name
将变为 my_product_name
。
现在,在您的方法中,您可以 - 保持 product_id
不变,将其用作您的方法的参数以显示特定产品,并将 slug 用于人类友好的链接,或者您可以只使用 @987654326 @ 表示产品。
您的网址可能如下所示:
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。
【讨论】:
以上是关于codeigniter 中的友好 url,带有 url 中的变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 codeigniter 创建 seo 友好的 url?
使用 Codeigniter 重定向 SEO 友好的 url?