代码之家  ›  专栏  ›  技术社区  ›  Rosamunda

不使用301而使用PHP脚本执行重定向,可以吗?

  •  0
  • Rosamunda  · 技术社区  · 6 年前

    我一直在读关于 redirection ,以及如何 affect (如果做得好,也可以不做)搜索引擎优化。

    我正在将我网站的内容平台从Drupal更改为PHP定制代码。

    在我当前的站点中,我有两个指向相同链接的链接,如下所示:

    …/node/123

    主要是因为Drupal允许您创建自定义链接,所以每篇文章都有一个默认链接( node/123 )还有定制的( /my-node-title

    我的问题是如何做,以防止失去任何搜索引擎优化,每个链接可能有。

    content.php?id=123

    我在数据库中存储了每篇文章的定制链接。

    我没有执行301重定向,而是将所有不存在的链接重定向到redirect.php页面以处理请求。 在那里,我从链接中获取字符串,在数据库中查找并重定向用户。

    过程如下:

    在.htaccess文件中:

    RewriteRule ^.*$ ./redirect.php
    

    在redirect.php中:

    我抓住了那个 $_SERVER['REQUEST_URI'] 和使用 explode() 我得到链接的最后一部分(即我的节点标题),在数据库中查找它,获取文章的ID(即123),并将其保存在 $link 变量

    header() 函数并执行重定向: header('Location: '.$link);

    .../my-node-title 但当文章在导航栏加载时,会出现 /content.php?id=123

    我想知道你对这个解决方案的意见。 我知道搜索引擎优化没有固定的规则,也没有任何确定性,但我想知道我所做的是否可以接受。谢谢

    1 回复  |  直到 4 年前
        1
  •  4
  •   Ro Achterberg    6 年前

    您的SEO策略不仅应该关注页面的可发现性,还应该考虑适当的用户体验。让用户跟随/some link/,然后登录到/index.php?page_id=123可能会让他们迷失方向。

    according to Google . 我没有关于它如何可能对其他排名信号产生不利影响的信息。您最好指定一个 canonical URL

    另外,请注意,如果存在查询参数,那么您的算法将无法工作。您可能还希望了解如何正确处理可选的尾部斜杠。

    在我看来,理想情况下,您希望向外部世界提供一致的URL,而不需要重定向。然后,URL处理将在内部将它们解析为各自的资源,为每个页面加载提供规范URL。