PHP当数据库中不存在记录时该怎么做

时间:2012-06-20 23:22:00

标签: php mysql codeigniter http-status-code-404

我正在查询数据库中是否有与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()?
        }
    }

请分享您自己最好的方法/意见。

3 个答案:

答案 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。