By | 2018-09-03

如何应对404错误

PHP系列的SEO的第2部分

爆破!我的Nunchucks课迟到了,我找不到钥匙了!我很确定我的笔记本电脑把它们留在了这里。啊哈,他们很高兴我终于找到了他们。我做的好事,因为我需要练习。在上周的课上看我。

当东西丢失时,你不讨厌它吗?我确定。当你确定某些东西存在然后突然间,404!当我的钱包不在它的位置时,在我的架子上显示一个小的404便利贴会很有帮助。或者,当我坐下来吃晚餐时,我会看到一个大泡沫404切口,我的儿子应该在那里,但仍然在外面玩。

好吧,尽管它会让你感到烦恼,但是对于你网站的访问者来说,在搜索引擎或博客中的某个地方找到一个链接可能同样糟糕,并且只是为了获得404条消息而来到你的网站。

比404便条更酷的是302条消息,详细信息指向我搜索对象隐藏的位置。我现在可以看到,“302:钥匙暂时在沙发垫之间移动。”当然,你从未在网上看到过302条消息,但在现实生活中它会很好。

那么为什么不为你的网站装备一个聪明的小东西来处理任何放错位置的页面呢?您甚至可以写一个小脚本(或借用我将在此处包含的脚本)将这些404转换为301并让您的用户再次回到路上。这是我要遵循的流程:

  1. 如果您还没有自己的百度站长,请将自己的网站添加到网站管理员工具中。
  2. 列出您的用户在您的网站上遇到的404错误。
  • 了解百度找到的404错误(查看您的网站管理员工具)。
  • 在服务器日志中查找其他404错误。

 

  • 搜索问题页面的搜索引擎结果。
  • 创建一个PHP“地图”页面(本质上是一个缺失页面及其新位置的数组)。
  • 在您网站上处理的所有其他代码之前添加一小段代码以处理重定向。

 

*快速注意事项:在输入此条目的过程中,我在办公室找到了尼尔森巨大的水壶 – 今天必定已经离开这里了。我刚刚发送了一封友好的302便利贴,并将其发回给他“302重定向:你一直在寻找的水壶暂时搬到彼得的办公室”。哇,这些笔记肯定有帮助!我需要快速通过电话获得专利律师!好的,回到帖子……

请记住,并非所有在服务器上抛出的404消息都需要重定向。其中一些是人们要求您在网站上没有的网页的合法状态代码。因此,筛选并创建您希望人们仍然能够找到的页面列表。一旦确定了这些页面,就将它们组织成一个数组映射列表,就像这样(我创建了一个名为redir_map.php的文件):

$ redir_map_arr = array(
  'productsconnect.htm'=>'产品',
  'press-releases / press-main.htm'=>'news / press-releases',
  'current-news / news-main.htm'=>'新闻'
);

好的,在这个例子中我只有3个页面可以重定向,但它应该仍然非常有趣。将redir_map.php文件保存在您网站上有意义的地方。现在开始实施。

根据您在网站上提供的用于提供网页的结构类型,您必须找到一种方法来包含此小重定向地图,然后才能处理您网站上的其他任何内容。这非常重要,因为我们将向请求我们网站页面的代理发送一些HTTP状态代码。如果您已经发送了标题,那么您可能会遇到问题。

我个人喜欢构建站点以将所有传入流量重定向到index.php页面(使用.htaccess文件完成并在将来的博客条目中解释)。这使我的网站DRY -I不必在页面和页脚的每个页面上放置包含,而不是。所以我将以下PHP代码放在我的索引页面之前几乎所有其他内容(您必须确定将此脚本放在您自己的网站上的位置 – 只需确保它是您网站上发送标头的第一段代码) :

要求( “redir_map.php”);
foreach($ redir_map_arr as $ old_url => $ map_to){
  if(strpos($ _ SERVER ['REQUEST_URI'],$ old_url)){
    标题(“HTTP / 1.1 301永久移动”);
    $ host = $ _SERVER ['HTTP_HOST'];
    $ uri = rtrim(dirname($ _ SERVER ['PHP_SELF']),'/');
    $ query =($ _SERVER ['REDIRECT_QUERY_STRING'])?'?'。$ _ SERVER ['REDIRECT_QUERY_STRING']:NULL;
    header(“Location:http:// $ host $ uri / $ map_to / $ query”);
    出口;
  }
}

好吧,正如你所看到的,我需要我们之前创建的redir_map.php文件。然后我循环遍历数组中的每个名称值对(键为$ old_url,值为$ map_to)。然后我查找传入代理请求的页面,看看它是否与我列表中的内容匹配。你可以编写一个正则表达式来进行更复杂的匹配,但这适用于简单的东西。

然后来了这个操作的肉。我要做的第一件事是发送一个标题告诉代理,它请求的文件已被永久移动。这样,谷歌,雅虎等人将确保索引正确的页面,留下旧的参考URL。

$ host,$ uri和$ query变量应该是显而易见的(参见下面的例外)。设置完成后,我只需再次使用PHP标头功能将请求重定向到新位置。

最后,我退出PHP执行。你只想这样做,以确保你的脚本不会继续,如果你不是只是将访问者重定向到新的地方,它将会做什么。

而已!我将对此发表评论,看看其他人可能有什么其他想法,或者看看其他人为同样的问题做了什么。谢谢大家 – 并密切关注那些钥匙和水壶!

*注意:我正在使用的脚本会传递旧URL中可能存在的任何查询。有些人在他们的.htaccess文件中有指令,这些指令可能与脚本在这里发生冲突。如果遇到问题,只需注释掉上面示例中的第7行,然后从第8行的标题位置字符串中删除/ $ query。

发表评论

电子邮件地址不会被公开。