我想阻止 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。