我一直在阅读有关redirection及其如何affect(或者如果做得不好的话)SEO的信息。
我正在将网站的内容平台从Drupal更改为PHP定制代码。
在当前站点中,我有两个链接指向相同的链接,如下所示:
... / node / 123
... /我的节点标题
主要是因为Drupal允许您创建定制链接,所以每篇文章都有一个默认的链接(node/123
)和一个定制的链接(/my-node-title
)。
我的问题是如何避免丢失每个链接可能具有的SEO。
在新网站中,所有文章的结构如下:content.php?id=123
我已将每篇文章的定制链接存储在数据库中。
不是执行301重定向,而是将不存在的所有链接重定向到redirect.php页面以处理请求。我从链接中获取字符串,寻找并在数据库中重定向用户。
过程如下:
RewriteRule ^.*$ ./redirect.php
在redirect.php中:
我抓取$_SERVER['REQUEST_URI']
,并使用explode()得到链接的最后一部分(即my-node-title),在数据库中查找它并抓取文章的ID(例如123),并将其保存在$link
变量中。
然后我使用header()函数并执行重定向:header('Location: '.$link);
因此,人们仍然会单击.../my-node-title
,但是当文章在导航栏上加载时,就会显示/content.php?id=123
我想知道您对这个解决方案的评论。我知道,使用SEO并没有固定的规则或确定性,但是我想知道我在做什么是可以接受的。谢谢!
答案 0 :(得分:4)
您的SEO策略不仅应着重于页面的可发现性,而且还应考虑适当的UX。让用户关注/ some-link /,然后进入/index.php?page_id=123可能会迷惑他们。
关于保存排名,302重定向(这是PHP中“ Location”标头的作用)不会影响PageRank according to Google。我没有任何信息可能会对其他排名信号产生不利影响。您最好为指向同一资源的所有不同链接指定一个canonical URL。
此外,请注意,如果存在查询参数,您的算法将无法工作。您可能还想看看如何正确处理可选的尾部斜杠。
理想情况下,我认为您希望向外部世界提供一致的URL,而无需任何重定向。然后,您的URL处理将在内部将它们解析为各自的资源,并在每次页面加载时提供规范的URL。