一聚教程网:一个值得你收藏的教程网站

热门教程

NGINX 区分搜索引擎爬虫与用户并URL重写

时间:2022-06-30 18:40:30 编辑:袖梨 来源:一聚教程网

前言

近期申请了个SSL证书玩玩,所以博客也启用了HTTPS(一方面也是因为垃圾评论太多,启用HTTPS也应该能防一些简单的灌水机吧?)。

然后听到某朋友提醒,百度等搜索引擎的爬虫是不抓HTTPS的,这样会带来收录问题。

开始

经过一番思考,想到通过NGINX规则来解决这个问题,便上网进行了搜索相关爬虫的UA,编写了以下规则。

需要注意的是,NGINX规则不像平时所写的代码,并不支持逻辑与/或,也不能条件嵌套。

 代码如下 复制代码
set $flag 0;
if ($host != 'jerry.hk') {
    set $flag 1;
}
if ($server_port = 80) {
    set $flag 1;
}
if ($scheme = http) {
    set $flag 1;
}
if ($http_user_agent ~* (baiduspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)){
    set $flag 2;
}
if ($flag = 1){
    rewrite ^/(.*)$ https://jerry.hk/$1 redirect;
}
error_page 497 https://jerry.hk$request_uri;

效果
该规则能够简单区分爬虫和普通用户,起到下面的效果:

普通用户(正常访问)

1.访问带www的域名(www.111com.net)跳转到不带www的域名(111com.net)

2.强制启用HTTPS(用户使用HTTP访问将跳转到HTTPS)

搜索引擎爬虫

可以正常访问HTTP页面

 

热门栏目