我正在查询数据库中是否有与url段www.site.com/post/24
中传递的id匹配的单个记录。
假设帖子24
不存在。什么是安全且 seo兼容的方式来处理未找到的数据库请求?
以下是使用Codeigniter模型的当前解决方案:
function read_post($post_id) //argument is the value of the url segment
{
$user_id = $this->tank_auth->get_user_id();
$this->db->where('user_id', $user_id);
$this->db->where('post_id', $post_id);
$this->db->limit(1);
$query = $this->db->get('posts');
//check if record exists
if ($query->num_rows() > 0) //row is returned
{
return $query->row(); //passed to controller and view
}
else
{
show_404(); //generate 404 message
return FALSE; //------------------------or exit()?
}
}
请分享您自己最好的方法/意见。
答案 0 :(得分:6)
显示404页面(使用404 HTTP状态代码)。这是正确的做法。否则你只会假装你有无限多页没有内容。
在404页面上很快说明内容不再存在。然后,您可以在网页上添加指向其他热门内容的链接。为了用户的利益,我们鼓励他们尝试将从 404页面转发到有趣的内容,但是这样做可以通过链接进行,这样用户就可以阅读404消息了选择下一步做什么。
如果您有包含单词的有意义的网址,您也可以提取单词并在数据库中进行某种搜索。在404页面上列出搜索结果,在“您可能感兴趣...”之类的标题下。如果您正在销售产品或服务,请不要犹豫,将404页面变成一个畅销的产品或服务!
我坚信最好的SEO是最适合您的访问者的SEO。这些都是关于将它们保留在您的网站上,而不是吓跑它们。使您的网站尽可能方便用户,并轻松找到所有有趣的内容。我上面的回答直接源于这种信念。根据标准(在这种情况下为HTTP标准)做正确的事情,同时尝试用良好的内容和服务来吸引用户。对于贵公司而言,这对销售来说也是最好的。
答案 1 :(得分:2)
SEO与您的数据库无关。
搜索引擎优化与关键字,标题,描述,词频,与最终呈现的HTML文档上的文章相同的页面的外向链接有关。此外,您需要SEO友好链接,例如/beach-party-on-sunday/
,/post/24
不会削减它。
答案: 根据SEO健全和HTTP服务器的工作原理,如果您的网站上不存在URL ,最好以404 HTTP状态进行响应,而不是200成功。 但是,如果您有一个要为其重定向用户的URL,请使用permament或临时重定向,具体取决于URL是否会恢复生效。
只是简单地遵守规则,你就会对SEO友好。
答案 2 :(得分:0)
我重定向到主页。在这种特定情况下,我将重定向到www.site.com/post。