【问题标题】:Using SEO-friendly links使用 SEO 友好的链接
【发布时间】:2010-11-01 19:02:12
【问题描述】:

我正在开发一个 PHP 网站,目前我的链接是 facebook 风格的,就像这样

me.com/profile.php?id=123

我正在考虑转向对抓取搜索引擎更友好的东西 (就像在stackoverflow上一样),比如:

me.com/john-adams

但是我如何区分两个同名用户 - 或者更准确地说,stackoverflow 如何区分两个同名问题? 我正在考虑做类似的事情

me.com/john-adams-123

并解析网址。

还有其他建议吗?

【问题讨论】:

标签: php seo


【解决方案1】:

为避免处理包含特殊字符的链接,您可以将此插件用于 Zend Framework。

https://github.com/btlagutoli/CharConvert

$filter2 = new Zag_Filter_CharConvert(array(
               'onlyAlnum' => true,
               'replaceWhiteSpace' => '-'
           ));
echo $filter2->filter('éééé ááááá ? 90 :');//eeee-aaaaa-90

这可以帮助你处理其他语言的字符串

【讨论】:

    【解决方案2】:

    我会说您提出的解决方案是对 stackoverflows 更好的解决方案,因为它保留了内容层次结构:

    me.com/john-adams-123
    

    在用户名前使用唯一 ID 简直是无稽之谈。

    不过,我建议强制执行内容类型:

    me.com/john-adams-123.html
    

    这将允许在提供各种内容类型的同时提供一致的网址。

    此外,您可以使用六位数作为唯一 ID,以进一步减少 URL 中不必要的内容,尤其是对于高端数字,但这通常是矫枉过正 :D

    me.com/john-adams-123.html -> me.com/john-adams-3F.html
    me.com/john-adams-1234567890.html -> me.com/john-adams-KF12OI.html
    

    最后,请务必在不符合要求的可访问 URI 上使用 301 重定向来重定向到“正确”的 seo 友好架构,以防止重复内容处罚。

    【讨论】:

      【解决方案3】:

      我会选择你的me.com/john-adams-123 风格,因为我认为URI 的最左边部分在SEO 排名中更重要。

      实际上,如果您愿意在多个控制器(而不仅仅是用户配置文件)上使用它,您可能希望更像me.com/john-adams-profile-123 使用重写规则将/.+-profile-(\d+) 重定向到profile.php?uid=$1 并且仍然能够使用,比如说,me.com/john-adams-articles-123 用于该用户的文章...

      【讨论】:

        【解决方案4】:

        在堆栈溢出的情况下,它是

        http://stackoverflow.com/questions/975240/using-seo-friendly-links
        
        http://stackoverflow.com/questions <- Constant prefix
        /975240                            <- Unique question id
        using-seo-friendly-links           <- Any text at all, defaults to title of question.
        

        另一方面,Facebook 决定让每个人都选择一个唯一的 ID。然后他们将把它用作个人资料页面。像http://facebook.com/p/username/ 这样的东西。他们正在解决用户之间的唯一性问题,只要求它是用户选择的某个字符串,在所有现有用户中都是唯一的。

        【讨论】:

          【解决方案5】:

          所以'作弊':-)。

          您问题的链接是“Using SEO-friendly links”,但“Using SEO-friendly links”也可以。

          数字后面的部分是对 SEO 友好的部分,但 SO 并不真正关心那里有什么。我认为它默认为问题标题。

          因此,在您的情况下,您可以构建如下链接:

          me.com/123/john-adams
          

          第二个 john adams 会有不同的 ID 和唯一的 URL,例如:

          me.com/111/john-adams
          

          【讨论】:

            【解决方案6】:

            Stackoverflow 的功能与您的 me.com/john-adams-123 选项类似,但更像 me.com/123/john-adams,其中 john-adams 部分实际上没有编程意义。您提议的方式稍微好一些,因为无语义内容的数字 ID 在 URL 中更靠右。

            我要做的是在用户表中存储一个唯一的 slug(这些对 SEO 友好的 URL 组件通常称为 slug),并在必要时执行数字附加操作以获得唯一的。

            【讨论】:

            • 实际上,与相当长的字符串 (varchar) 值相比,使用较短整数值的索引列时数据库性能更好,因此使用数字 ID 更好。
            猜你喜欢
            • 2012-04-27
            • 2012-09-17
            • 2014-03-25
            • 2011-02-14
            • 2018-10-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-13
            相关资源
            最近更新 更多