我正在使用Codeigniter开发一个网站。
我想将网址重定向到其SEO友好版本。例如。
我有网址
一个。 http://www.example.com/post/[post-id]/
我希望此网址能够直接转换为SEO友好版本
B中。 http://www.example.com/post/[post-id]/[post-title]
就像stackoverflow正在使用一样,并且像将URL重定向到B URL。
http://stackoverflow.com/questions/[question-id]/[question-title]
我在Codeigniter中使用了302重定向,直到我在某处找到,如果你使用的是302重定向。
然后谷歌可能会把你视为垃圾邮件发送者,但是当我看到Stackoverflow网址模式时,我认为它更好地拥有B版本的URL。
所以我的问题是:
1.使用哪种重定向stackoverflow?
2.将[post-title]的Slug存储在数据库中或使用url_title()
函数手动计算它是否更好。
答案 0 :(得分:2)
302表示临时重定向。结果是搜索引擎仍会索引原始网址。
301表示永久重定向。这导致搜索引擎将索引数据传输到新URL。
302s不是垃圾邮件,但如果在错误的情况下使用,则无法帮助自己。
在您的情况下,您将永久移动您的网址,以便301适当。
答案 1 :(得分: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);
注意:为了使此功能起作用,必须在将任何内容输出到浏览器之前使用它,因为它使用服务器头。