0

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

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

4

3 回答 3

6

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

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

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

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

于 2012-06-20T23:24:32.680 回答
2

SEO与您的数据库无关。

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

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

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

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

于 2012-06-20T23:27:15.923 回答
0

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

于 2012-06-20T23:24:32.530 回答