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


PHP what to do when records don't exist in the database

我正在数据库中查询与 url 段中传递的 id 匹配的单个记录 www.site.com/post/24 .

假设后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()?
        }
    }

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

显示 404 页面(带有 404 HTTP 状态代码)。这是正确的做法。否则,你只会假装你有无限多的页面没有内容。

在 404 页面上简要描述内容不再存在。然后,您可以在网页上添加指向其他热门内容的链接。为了用户的利益,鼓励尝试将他们从 404 页面引导到有趣的内容,但使用链接执行此操作,以便用户可以阅读 404 消息并选择下一步操作。

如果您有有意义的URL中包含单词,则还可以提取单词并在数据库中进行某种搜索。在 404 页面上也列出搜索结果,在"您可能对..."等标题下。如果您正在销售产品或服务,请不要犹豫,将 404 页面变成一个不错的销售页面!

我坚信最好的SEO是最适合您的访问者的SEO。这一切都是为了将它们保留在您的网站上,而不是吓跑它们。使您的网站尽可能用户友好,并使其易于找到所有有趣的内容。我上面的回答直接源于这种信念。根据标准(在本例中为 HTTP 标准)做正确的事,同时尝试用好的内容和服务来吸引用户。这当然也是对您的公司销售最好的。

SEO与您的数据库无关。

SEO与关键字,标题,描述,单词频率,指向与最终渲染HTML文档上的文章相同的页面的传出链接有关。

此外,您需要SEO友好的链接,例如/beach-party-on-sunday//post/24不会削减它。

答:根据SEO的理智,HTTP服务器通常可以正常工作,如果您的网站上不存在URL,则最好以404 HTTP状态而不是200成功状态进行响应。但是,如果您有希望重定向用户的 URL,请使用永久或临时重定向,具体取决于 URL 是否会恢复活力。

只要玩得简单,遵守规则,你就会对SEO友好。

我重定向到主页。在这种特定情况下,我会重定向到 www.site.com/post。