javascript - 是否可以从 Cloudflare 工作人员重定向脚本中排除搜索机器人(如 Google)?
问题描述
我使用 Cloudflare worker 将访问者重定向到正确的网站版本,如下所示:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
country_code = request.headers.get('CF-IPCountry');
var link;
switch(request.headers.get('CF-IPCountry')) {
case 'TW': // Taiwan
link = "https://www.website.com/twn";
break;
case 'TH': // Thailand
link = "https://www.website.com/tha";
break;
case 'GB': // United Kingdom
link = "https://www.website.com/gbr";
break;
case 'US': // United States
link = "https://www.website.com/us";
break;
default:
link = "https://www.website.com/rotw" // Rest of the world
}
return new Response('', {
status: 301,
headers: {
'Location': link
}
})
}
问题是谷歌机器人被重定向到 website.com/us,因此我的谷歌入口将传入的访问者直接指向 /us 网站。有没有办法从国家重定向脚本中排除搜索机器人并将它们直接路由到 website.com 而不是 website.com/countrycode?
解决方案
你能做这样的事情吗。我没有测试过这个。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
country_code = request.headers.get('CF-IPCountry');
var link;
let userAgent = request.headers.get('User-Agent') || ''
if (userAgent.includes('Googlebot')) {
return new Response('', {
status: 301,
headers: {
'Location': "https://www.website.com/"
}
})
}
switch(request.headers.get('CF-IPCountry')) {
case 'TW': // Taiwan
link = "https://www.website.com/twn";
break;
case 'TH': // Thailand
link = "https://www.website.com/tha";
break;
case 'GB': // United Kingdom
link = "https://www.website.com/gbr";
break;
case 'US': // United States
link = "https://www.website.com/us";
break;
default:
link = "https://www.website.com/rotw" // Rest of the world
}
return new Response('', {
status: 301,
headers: {
'Location': link
}
})
}
推荐阅读
- javascript - Browserify 不发送数据写入函数
- reactjs - 使用 Axios 时未从渲染返回 setState
- node.js - 带有嵌套模式的 GraphQL 返回 null
- mongodb - MongoDB游标在迭代之前包含检索到的文档?
- python - 在 Tensorflow 中使用 Numpy 数组条件操作掩码
- c++ - 具有递归控制的可变参数模板
- python - 远程访问 Python 目前在本地访问的文本文件
- java - kotlin android 从 realm-java 中获取已删除的值
- html - 如何让我的网站保持在窗口高度内?
- c# - NetMQ(ZeroMQ)如何使“无代理可靠性(自由模式)”工作