我听说有人使用“slug”来生成干净的URL。但我不知道它是如何工作的。 目前,我的CodeIgniter网站生成的URL看起来像这样:
www.site.com/index.php/blog/view/7
据我所知,通过维护一个slug字段可以实现像这样的URL:
www.site.com/index.php/blog/view/once-upon-a-time
这个如何实现?特别是在使用codeigniter时?
我听说有人使用“slug”来生成干净的URL。但我不知道它是如何工作的。 目前,我的CodeIgniter网站生成的URL看起来像这样:
www.site.com/index.php/blog/view/7
据我所知,通过维护一个slug字段可以实现像这样的URL:
www.site.com/index.php/blog/view/once-upon-a-time
这个如何实现?特别是在使用codeigniter时?
我只是把slug存储在数据库表中的一个名为slug
的列中,然后通过slug查找文章,就像这样:
public function view($slug)
{
$query = $this->db->get_where('posts', array('slug' => $slug), 1);
// Fetch the post row, display the post view, etc...
}
另外,要从文章标题轻松获取slug,只需使用URL助手中的url_title()
函数:
// Use dashes to separate words;
// third param is true to change all letters to lowercase
$slug = url_title($title, 'dash', true);
一个小奖励:您可能希望在 slug
列上实现唯一键约束,以确保每个帖子都有一个唯一的slug,这样CodeIgniter就不会犹豫要查找哪篇文章。当然,您应该首先为您的帖子提供唯一的标题,但是实施此措施强制规则并防止您的应用出现问题。
。
$string = 'áéíóú ÁÉÍÓÚ';
$slug = url_title(convert_accented_characters($string), 'dash', true); //convert_accented_characters function will deal with the accented characters.
echo $slug; //aeiou-AEIOU