在不牺牲页面排名的情况下启动 PHP 会话

不久前,我一直在从事一个需要身份验证登录系统的网站项目。为了让登录系统正确操作我网站的每个页面,需要检查是否创建了会话并且用户已登录。你们中的一些人可能知道在 PHP 中,如果不启动会话变量,就无法查看会话变量会议。因此,例如,如果您想提供一个简单的“您以 Mark 身份登录,请单击此处注销”。在每个页面上,您都必须实际启动会话才能正确显示此消息。

乍一看,这项任务似乎微不足道。启动会话的代码只有一行:

session_start();

在更改已在 Google 中很好地编入索引的现有网站以包含会话后,我震惊地发现这可能会对 Google 索引产生什么影响。做出更改几周后,我的大部分(如果不是全部)页面都不再被 Google 编入索引,有一段时间我不知道是什么原因造成的。

一段时间后,我会注意到有时我的网址会出现一串额外的数字。它们看起来像这样:

http://www.yourdomain.com/?PHPSESSID=61ca9c60b10cc8f481ac9c1eacbee797

当我看到这个时,我立即知道这就是 Google 删除我的页面的原因。这串数字本质上会犯两个严重的 SEO 错误。其中一个是,每次您访问该站点时,这个数字都会发生变化。这意味着 Google 认为它是一个不同的 URL,其内容与它索引的最后一个 URL 相同。很多人都知道谷歌会惩罚重复内容的页面。这串额外的数字实质上使您的整个网站成为一堆重复项。

如果这还不够,它还会犯另一个 SEO 错误。 Google 不会对看似静态的页面进行加权,就像对看似一次性随机生成的页面进行加权一样。对谷歌而言,上述 URL 似乎是一个仅供一个人查看的页面。 Google 赋予其较低的索引权重。

那么我做了什么来解决这个问题呢?

经过一番搜索,我发现这实际上是一个常见问题,并且有一个简单的解决方案可以解决它。我真希望在牺牲网页排名和索引之前知道这一点。为了避免您将来遇到麻烦,请从我的错误中吸取教训,并在启动任何会话变量之前使用以下代码。

//These commands must be set BEFORE the session is started
ini_set('session.use_trans_sid', false);
ini_set('session.use_only_cookies', true);
ini_set('url_rewriter.tags', '');
// start session
session_start();

故事的寓意?

对您的 Google 索引可能依赖的页面所做的操作要非常小心。

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏