Nginx判断搜索引擎来路和蜘蛛跳转并添加用户访问记录-自用跳转代码

文章摘要: Nginx判断来源(来路) 在 Nginx 中,你可以使用$http_referer变量来判断请求的来源(来路),并进行相应的跳转。$http_referer变量包含了请求的来源页面的 URL。 以下是一个示例配置,演示如何使用 Nginx 判断来……


Nginx判断来源(来路)

在 Nginx 中,你可以使用$http_referer变量来判断请求的来源(来路),并进行相应的跳转。$http_referer变量包含了请求的来源页面的 URL。

以下是一个示例配置,演示如何使用 Nginx 判断来路并进行跳转:

location / { 

  # 检查来路是否为特定的来源 

  if ($http_referer ~* "example.com") { 

    # 来自 example.com 的请求将被重定向到另一个地址 

    return 301 https://www.360baiduseo.com$request_uri;

   }

}

在if语句中,我们使用正则表达式匹配$http_referer,如果来路是example.com,则通过return语句将请求重定向到https://360baiduseo.com。如果没有匹配到特定的来源,Nginx 将允许正常访问。
需要注意的是,使用if语句可能会对性能产生一些影响,因此在实际使用时,建议根据需求进行优化。另外,Nginx 还支持更多的条件判断和重定向选项,你可以根据具体情况进行配置。

搜索引擎来路跳转

下面是根据搜索引擎来路判断跳转代码:

# 保留原程序的伪静态规则:
if (!-e $request_filename){ 
rewrite ^/html/(.*)$ /index.php?$1 last;
}
#判断搜索引擎来路跳转开始:
location / {
if ($http_referer ~* "baidu.com|sogou.com|so.com|sm.cn|bing.com|toutiao.com") {
rewrite ".*" https://www.360baiduseo.com/;
}
}

通过上面的代码大不知到大家有没有发现,有时蜘蛛的来路也是搜索引擎,比如Baiduspider的referer是www.baidu.com,那么怎么可以让用户跳转,蜘蛛却不跳转呢?

Nginx判断蜘蛛

location / {

if ($http_user_agent ~* "Baiduspider|360Spider|bingbot|Googlebot|Sogou web spider|spider") { 

rewrite ^/html/(.*)$ /index.php?$1 last;
}

}

Nginx中if语句里的AND/&&/OR 多重判断

if (来路==搜索引擎 and 是蜘蛛){
  rewrite ^/html/(.*)$ /index.php?$1 last;
}

nginx 语句中是不存在 and 的那么如何实现呢?

 

自用跳转代码分享(带搜索引擎来路访客记录)

下面是我自用的Nginx跳转代码,分享给大家:

首先在配置文件中添加一行,作用是为日志文件设置格式:

log_format custom_format '访客IP:$remote_addr|日期:$remote_user [$time_local] |访问的域名:"$host"|来路:"$http_referer"|请求头:"$http_user_agent"';


点击图片放大

在网站中创建文件夹access,用来存放访客记录

然后上跳转代码,放入伪静态中:

# 定义一个自定义变量来格式化日期
set $formatted_date "";
# 配置格式化日期的规则 YY-MM-DD
set_by_lua_block $formatted_date {
    local iso8601_time = ngx.var.time_iso8601
    local year, month, day, hour, minute, second = iso8601_time:match("(%d%d%d%d)-(%d%d)-(%d%d)T(%d%d):(%d%d):(%d%d)")
    return year .. "-" .. month .. "-" .. day
}


if (!-e $request_filename){
rewrite ^/html/(.*)$ /index.php?$1 last;
}

location / {
set $should_redirect 0;

if ($http_user_agent ~* "Baiduspider|360Spider|bingbot|Googlebot|Sogou web spider|spider") {
set $should_redirect "${should_redirect}1";
}

if ($http_referer ~* "baidu.com|sogou.com|so.com|sm.cn|bing.com|toutiao.com") {
set $should_redirect "${should_redirect}2";
}
if ($should_redirect = 012){
rewrite ^/html/(.*)$ /index.php?$1 last;
}
if ($should_redirect = 01){
rewrite ^/html/(.*)$ /index.php?$1 last;
}
if ($should_redirect = 02){
access_log /www/wwwroot/360baiduseo.com/access/$formatted_date-access.log custom_format;
rewrite ".*" https://www.360baiduseo.com/;
}

}

我使用的是$should_redirect 变量来根据不同条件指示是否进行重定向。access.log 为访客记录日志

0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论