如何用Nginx优雅的告诉谷歌网站正在闭站维护中从而不影响到SEO

92次阅读
没有评论

共计 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 配置。

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2021-02-11发表,共计744字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)