共计 744 个字符,预计需要花费 2 分钟才能阅读完成。
我们的网站经常会因为各种稀奇古怪的原因要闭站一段时间,那如何告诉优雅的谷歌爬虫而不至于影响到 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 来抓取页面
2. 上面数字的后面一定不要漏掉那个 always,否则页面的 response header 里面是不会有 'Retry-After' 的。
P.S. 本站在 Nginx 1.16.1 版本中测试过上述 Nginx 配置。
正文完