前段时间一个网站更换了服务器,随后几个主要的关键词全部从第一位消失得无影无踪。大约持续了20天才恢复正常排名,甚是蛋疼。
今天又换服务器了,查了下百度,大部分人认为更换IP对搜索引擎并无影响,于是自己研究了下,得出如下结论:
访问正常的情况下,更换IP本身应该不会对蜘蛛有任何影响,问题就在访问不正常的页面。为什么会访问不正常?因为蜘蛛本身也可以视为一个客户端,更换服务器IP是需要时间来生效的,如果蜘蛛上的DNS一直是你的旧网站IP,那么对于你新增加的内容,它有可能爬到很多404,如果你直接把旧的空间关了,那就全是错误代码了。
蜘蛛具体什么时候才能真正接受新的IP,我这几天会继续观察。
这是access抓到的蜘蛛记录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
119.188.35.22 www.zd84.com - [23/Oct/2014:11:03:23 +0800] "GET /news/show-8013.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8013.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:03:23 +0800] "GET /news/show-8007.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8007.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:03:26 +0800] "GET /news/show-8012.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8012.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:03:26 +0800] "GET /news/show-8011.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8011.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:03:26 +0800] "GET /news/show-8010.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8010.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:03:26 +0800] "GET /news/show-8009.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8009.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:03:29 +0800] "GET /news/show-8008.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8008.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:08:02 +0800] "GET /news/show-8006.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8006.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:08:03 +0800] "GET /news/show-8005.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8005.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:08:06 +0800] "GET /news/show-8004.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8004.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:08:06 +0800] "GET /news/show-8002.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8002.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:08:06 +0800] "GET /news/show-8001.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8001.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 119.188.35.22 www.zd84.com - [23/Oct/2014:11:08:06 +0800] "GET /news/show-8000.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8000.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:08:09 +0800] "GET /news/show-8003.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-8003.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" 61.240.149.141 www.zd84.com - [23/Oct/2014:11:08:10 +0800] "GET /news/show-7999.html HTTP/1.1" 404 4229 "http://www.zd84.com/news/show-7999.html" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" |
360的蜘蛛相当勤快,刚刚发的新闻就被爬了。其实我很是好奇360在没有我正确IP的情况下,是怎么知道站点新发布的新闻地址的。。看上面的access,可以发现一堆的404错误。
补救方法
本来想用PHP,直接写个file_get_contents从新服务器拉,然后发现不现实,毕竟还有图片什么的,这也是搜索引擎非常看重的东西。不能404。
后来决定用Lighttpd代理来处理这个问题,搜索引擎访问时,旧服务器从新服务器拉取资源。其他web组件都有类似的代理功能。
建议大家需要更换服务器时,预留一段时间处理这样的工作,不要换了服务器直接关掉旧服务器。
修改/etc/lighttpd/modules.conf
,找到#include "conf.d/proxy.conf"
将前面的井号去掉,打开Proxy模块。
将以下代码插入到你相应的服务器配置块中,切记只需打新服务器IP,不要打域名,不需要担心解析问题,Lighttpd会以访客域名发起请求,包含ua信息等。
1 |
proxy.server = ( "/" => (( "host" => "新服务器IP", "port" => 80 ))) |
这样一来,所有对旧服务器的访问会被代理到新服务器上,持续观察access,等到旧服务器完全没有蜘蛛来爬的时候,就可以关闭了。