在不使用301而是使用PHP脚本的情况下进行重定向,可以吗?

时间:2018-11-19 13:50:53

标签: php .htaccess redirect

我一直在阅读有关redirection及其如何affect(或者如果做得不好的话)SEO的信息。

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

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

  

... / node / 123

     

... /我的节点标题

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

我的问题是如何避免丢失每个链接可能具有的SEO。

在新网站中,所有文章的结构如下:content.php?id=123

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

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

过程如下:

.htaccess文件中的

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并没有固定的规则或确定性,但是我想知道我在做什么是可以接受的。谢谢!

1 个答案:

答案 0 :(得分:4)

您的SEO策略不仅应着重于页面的可发现性,而且还应考虑适当的UX。让用户关注/ some-link /,然后进入/index.php?page_id=123可能会迷惑他们。

关于保存排名,302重定向(这是PHP中“ Location”标头的作用)不会影响PageRank according to Google。我没有任何信息可能会对其他排名信号产生不利影响。您最好为指向同一资源的所有不同链接指定一个canonical URL

此外,请注意,如果存在查询参数,您的算法将无法工作。您可能还想看看如何正确处理可选的尾部斜杠。

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