3

我正在使用 codeigniter 构建一个网站,我的 url 遵循以下格式:link1,其中 id 例如 123 用于查询数据库以获取记录。

最后一个 uri 段仅用于 SEO 友好的目的,可以更改为任何内容 - 例如link2

this answer之后,如何重定向url的所有变体以在最后一段中显示正确的文本?

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

例如

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

谢谢

---更新1---

刚刚发现上面的方法有问题。有时我会在 url 的末尾有额外的段 - 例如链接- 这不适用于

---更新2---

这是我最新的代码。如果仅提供了 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);
    }
4

1 回答 1

0

你为什么不直接使用 $this->uri->segment(#); 其中 # 是段号。这还没有让我们失望。还发现一些建议的 rsegment(s) 可能有问题的参考资料。

于 2013-08-18T02:58:07.967 回答