【问题标题】:Making a SEO friendly URL for a CMS为 CMS 制作一个 SEO 友好的 URL
【发布时间】:2012-05-11 04:19:26
【问题描述】:

我正在尝试使用 Codeigniter 创建一个内容管理系统。我有一个显示文章标题列表的页面。当任何用户点击任何文章标题时,都会将用户带到单独页面中该文章的详细信息。

我正在使用以下代码显示文章标题列表:

 <a href="<?php echo base_url(); ?>article/<?php echo $row['article_id']; ?>">
 <?php echo $row['article_title']; ?></a>

当任何用户点击上面的链接时,它会获取 article_id 并转到以下控制器

控制器:

function index($id){

   $this->load->model('mod_articles');
    $data['records']=$this->mod_articles->list_articles($id);
    $this->load->view('view_article',$data);
}

型号:

  function list_articles($id)
    {   
        $this->db->select('*');
        $this->db->from('article');
        $this->db->where('article_id', $id); 
        $query = $this->db->get();
        return $query->row_array();

    }  

现在当我显示结果时,在浏览器的地址栏中,链接看起来像这样-

  localhost/cms/article/1         //<< here localhost/cms/ is my base_url

根据这个website,良好的SEO友好URL示例是http://www.mysite.com/joomla-seo-tips

现在我的问题是如何让我的 URL 看起来像 localhost/cms/article/my-article-title 而不是在链接末尾显示文章的 ID?

要实现这一点,我应该查询我的文章标题而不是文章 ID,还是有一些更好的方法可以做到这一点?

请分享您对此的想法。

在此先感谢 :)

编辑

那么,在保存我的内容之前,我应该运行以下代码获取$article_slug 然后保存它吗?

function create_slug($string){
$slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
return $slug;
}

$article_slug= create_slug('My Name ');   // as you suggested I will create a new column for this

【问题讨论】:

  • 如果你的 url 看起来像这样……怎么办? localhost/cms/article/1/my-article-title
  • 我猜也可以。但是怎么做呢?谢谢:)

标签: php codeigniter seo


【解决方案1】:

当您保存记录时,通过在标题上运行url_title() 给它一个 URL slug(这应该是一个唯一的列,请确保在保存时检查重复条目)。

url_title("My page title!") 应该返回类似my-page-title 的内容,请参阅url helper。我通常也会在 slug 上运行 strtolower,看起来 CI 允许大写。

当您查询内容时,通过slug 获取,类似于:

$this->db->where('slug', $this->uri->segment(1))->get('articles'); 

当然,您的链接使用slug 而不是ID。

【讨论】:

  • 感谢您的回复。请检查我上面问题的编辑部分。谢谢:)
  • 是的,在保存到数据库之前,您会创建 slug。
  • 我不明白为什么要使用$this-&gt;uri-&gt;segment(1))。我想我可以通过 article_slug 找到结果。请您解释一下吗?
  • 我想我的意思是$this-&gt;uri-&gt;segment(2)。这取决于您的 URL,只需使用任何适合从 url 获取 slug 的方法即可。您可能只想使用控制器方法的第一个参数。
【解决方案2】:

您的“文章”表可以包含一个附加字段(“slug”是它的常用名称,因此在您的示例中可能是“article_slug”),它既用作 URL 的一部分,又用作要查询的字段。通常,CMS 会将“slug”显示为可编辑字段,但会使用转换后的页面标题的值预先填充它(通常通过小写标题、将空格转换为破折号并清除任何 URL 不友好字符,如引号)。

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 2011-10-21
    • 2015-03-09
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多