我们的网站经常会因为各种稀奇古怪的原因要闭站一段时间,那如何告诉优雅的谷歌爬虫而不至于影响到SEO呢?
谷歌的Google 搜索中心博客中的这篇文章告诉了我们答案,其实核心就是要返回一个503的状态码和增加一个叫‘Retry-After’的response header, 这种方式在php中的实现可能如下所示:
1 2 |
header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Retry-After: Sat, 8 Oct 2011 18:27:00 GMT'); |
那如果你的网站后端用的不是PHP而是像本站用的是Python呢,不过所幸现在大多网站的前端流量由Nginx来承载了,那么下面就展示一下在Nginx中怎么来实现上述的核心。
首先我们先在监听80端口的virtual server中加入一个如下的statement,
1 |
return 301 https://$server_name$request_uri; |
上面这个是做http跳转https重定向的,然后再到443端口的virtual server中加入如下内容,
1 2 3 4 |
location / { add_header 'Retry-After' 1296000 always; # 7*24*60*60 = 604800 return 503; # HTTP 503 Service Unavailable } |
上面有两个点要注意:
1. 'Retry-After'后面跟的数字是过多少天的总秒数再让谷歌的bot来抓取页面
2. 上面数字的后面一定不要漏掉那个always,否则页面的response header里面是不会有'Retry-After'的。
P.S. 本站在Nginx 1.16.1版本中测试过上述Nginx配置。