用Codeigniter重定向SEO友好网址?

时间:2013-07-30 04:05:41

标签: codeigniter url redirect uri

我正在建立一个带有codeigniter的网站,我的网址遵循以下格式:http://www.mywebsite.com/123/name-of-the-record其中,例如123用于查询数据库以获取记录。

最后一个uri细分市场仅用于SEO友好目的,可以更改为任何内容 - 例如http://www.mywebsite.com/123/i-can-write-anything-here

继续此答案https://stackoverflow.com/a/1442130/864507之后,如何重定向网址的所有变体以在最后一段显示正确的文字?

我应该检查控制器中的url格式是否正确,并将其重定向到那里?

e.g。

if($this->uri->rsegment(4, 0) !== $this->myModel->recordName) {
    redirect($id.'/'.$this->myModel->recordName);
}

由于

--- --- UPDATE1

刚刚发现上述方法存在问题。有时我会在网址的末尾添加额外的细分 - 例如http://www.mywebsite.com/123/name-of-the-record/urikey/urivalue - 这不适用于

--- --- UPDATE2

这是我的最新代码。如果仅提供id,则忽略其他段并起作用。希望有人能够确认这是否是正确/最好的方式!

$correctRecordName = myEncodeForUrlFunction($this->myModel->recordName);
$rsegments = $this->uri->rsegment_array();

    if(count($rsegments) < 4 || $rsegments[4] !== $correctRecordName) {
        $rsegments[4] = $correctRecordName;
        $url = site_url($rsegments);
        redirect($url, 'location', 301);
    }

1 个答案:

答案 0 :(得分:0)

为什么不直接使用$ this-&gt; uri-&gt; segment(#);其中#是段号。这还没有让我们失望。还发现了一些提示rsegment(s)可能有问题的参考文献。