我们的网站经常会因为各种稀奇古怪的原因要闭站一段时间,那如何告诉优雅的谷歌爬虫而不至于影响到SEO呢?

谷歌的Google 搜索中心博客中的这篇文章告诉了我们答案,其实核心就是要返回一个503的状态码和增加一个叫‘Retry-After’的response header, 这种方式在php中的实现可能如下所示:

 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,

return   301   https://$server_name$request_uri;

上面这个是做http跳转https重定向的,然后再到443端口的virtual server中加入如下内容,

location / {
        add_header 'Retry-After'  1296000 always; # 7*24*60*60 = 604800
        return 503;     # HTTP 503 Service Unavailable
}

上面有两个点要注意:

1. ‘Retry-After’后面跟的数字是过多少天的总秒数再让谷歌的bot来抓取页面

  1. 上面数字的后面一定不要漏掉那个always,否则页面的response header里面是不会有’Retry-After’的。

P.S. 本站在Nginx 1.16.1版本中测试过上述Nginx配置。