2

我正在使用 Codeigniter 开发一个网站。

我想将 URL 重定向到其 SEO 友好版本。例如。
我有网址

一种。http://www.example.com/post/[post-id]/

我希望此 URL 重定向到自身的 SEO 友好版本

B.http://www.example.com/post/[post-id]/[post-title]

就像stackoverflow正在使用并且喜欢将A URL重定向到B URL。

http://stackoverflow.com/questions/[question-id]/[question-title]

我在 Codeigniter 中使用 302 重定向,直到我在某处读到如果您使用 302 重定向。
那么谷歌可能会将您视为垃圾邮件发送者
,但当我再次看到 Stackoverflow URL 模式时,我认为拥有 B 版本的 URL 会更好。

所以我的问题是:
1.stackoverflow 使用的是哪个重定向?
2. 将[post-title]的Slug存储在数据库中还是使用url_title()函数手动计算更好。

4

2 回答 2

2

302 表示临时重定向。结果是搜索引擎仍会将原始 URL 编入索引。

301 表示永久重定向。这导致搜索引擎将索引数据传输到新 URL。

302 不是垃圾邮件,但如果在错误的情况下使用,您不会帮助自己。

在您的情况下,您将永久移动您的 URL,因此 301 是合适的。

于 2012-11-23T03:08:26.873 回答
0

在帖子控制器中为帖子的 SEO 友好 URL 创建一个私有函数。

private function _redirect($url) {    // $url = http://www.example.com/post/[post-id]/
  redirect($url . $this->post_title); // becomes http://www.example.com/post/[post-id]/[post-title]
  return;
}

您应该在重定向之前设置一个 post_title 成员变量。无论您在哪里调用 redirect() 函数,都可以将其替换为您的私有函数 _redirect() ,一切顺利。

默认情况下它的 302 重定向。要进行 301 重定向,只需将参数添加到 redirect() 函数。例如

// with 301 redirect
redirect($url . $this->post_title, 'location', 301);

注意:为了使此功能正常工作,必须在将任何内容输出到浏览器之前使用它,因为它利用了服务器标头。

于 2012-11-22T15:31:40.153 回答