【问题标题】:PHP what to do when records don't exist in the databasePHP当数据库中不存在记录时该怎么办
【发布时间】:2012-06-23 04:19:54
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    在 404 页面上简要说明内容已不存在。然后,您可以在您的网页上添加指向其他热门内容的链接。为了用户着想,我们鼓励他们尝试引导他们 404 页面 有趣的内容,但是使用链接这样做,以便用户可以阅读 404 消息和选择下一步做什么。

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

    我坚信最好的 SEO 就是最适合您的访问者的搜索引擎优化。这一切都是为了将它们保留在您的网站上,而不是吓跑它们。使您的网站尽可能用户友好,并让您轻松找到所有有趣的内容。我上面的回答直接源于这种信念。根据标准(在本例中为 HTTP 标准)做正确的事,同时尝试以良好的内容和服务吸引用户。这无疑也是对贵公司整体而言最有利的销售方式。

    【讨论】:

    • 感谢您的宝贵建议!我注意到很多网站都这样做
    【解决方案2】:

    SEO 与您的数据库无关。

    SEO 与关键字、标题、描述、词频、指向与最终呈现的 HTML 文档上的文章在同一区域内的页面的传出链接有关。

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

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

    只要简单并遵守规则,您就会对 SEO 友好。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这常常令人困惑。如果之前有 /post/24 并且用户通过某个链接到达那里,那么他们登陆 /post 对她有什么好处?
      • 至少她可以看到其他帖子。没有什么可以将她从丢失的页面中拯救出来。
      • @jarchuleta,是的,我同意,但对于公开帖子,我认为让搜索引擎(可能已将帖子编入索引)知道该帖子不再存在(使用 404 消息或其他任何方式)是件好事消息处理...)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2022-08-17
      相关资源
      最近更新 更多