我正在使用 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);
}