在 nginx 级别阻止 ChatGPT 机器人

在 nginx 级别阻止 ChatGPT 机器人

我想阻止 ChatGPT 访问整个网站,但仍允许它查看位于公共根目录中的 robots.txt 文件(我的 robots.txt 基本上也告诉 ChatGPT 不要抓取该网站)

我按如下方式阻止它:

# Disallow chatGPT bot
location / {
    if ($http_user_agent ~* "gptbot") {
        return 401;
    }
}

但我希望它能够访问 robots.txt 文件。

我尝试这样做:

if ($http_user_agent ~* "GPTBot") {
    if ($request_uri != /robots.txt) {
        return 403;  # Forbidden
    }
}

但它失败了。

我也尝试过:

location / {
    if ($http_user_agent ~* "gptbot") {
        return 401;
    }
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

还有这个的变体使用地图

map $http_user_agent $block_gptbot {
    default         0;
    ~*gptbot        1;
}

server {

location / {
    if ($block_gptbot) {
        return 401;
    }
}

...

但在这两种情况下,整个网站都被封锁了。这意味着 gptbot 无法访问任何内容(它得到 401),甚至无法访问 robots.txt。

相关内容