Cloudflare Workers 实现301网址跳转

本文将介绍如何基于 Cloudflare Workers 使用 Node.js 实现一个网址跳转服务,并自定义域名

Cloudflare Workers

  • 在边缘运行代码,提供强大的 Web 可扩展性

  • 在边缘应用 自定义安全规则过滤逻辑 来检测恶意 Bots 病毒并防止它们消耗资源,从而提高安全性。

  • 将更多个性化和交互性纳入静态 HTML 页面,并在边缘运行动态请求,从而改善用户体验。

  • 将更多操作流程和请求处理转移到边缘,以提高缓存命中率并降低带宽成本,从而降低运营成本。

Cloudflare Workers 可以通过自定义安全规则和过滤逻辑来提高网站的安全性,因此,我们可以通过 t.domain1.com\blog 301重定向到真实地址,如:blog.domain2.com,达到隐藏真实地址的目的

步骤

1. 创建 Workers

点击创建 Worker

代码的主要思想是:对于诸如 to.domain1.com/blog 这样的请求,截取 / 后面的内容并查询 redirectMap,然后 301 跳转到相应网址,如 blog.domain2.com

代码如下,只需要根据需求自己修改 redirectMap 的内容就行了

async function handleRequest(request) {
  let requestURL = new URL(request.url)
  let path = requestURL.pathname.split('/')[1]
  let location = redirectMap[path]
  if (location) {
    return Response.redirect(location, 301)
  }
  return fetch(request)
}
addEventListener('fetch', async event => {
  event.respondWith(handleRequest(event.request))
})

const redirectMap = {
  blog: 'https://blog.tsund.cn/'
}

2. 自定义域名

注意:要使用的域名必须是由 Cloudflare 管理的

进入 Cloudflare 的域名界面后,点击 Workers 标签,并添加一条 route

然后是配置 route,可以使用通配符

注意:如果是二级域名,需要先给这个二级域名添加一条 CNAME 记录,否则跳转会有问题。Workers 会在 CNAME 之前拦截请求,只有未被拦截的才会走 CNAME 记录的地址。 所以这个根据自己需求就可以了

至此,就实现了通过 Cloudflare Workers 实现 301 网址跳转,达到隐藏目标网址的目的

如:https://t.shenke.codes/blog 会跳转到 https://blog.tsund.cn


更新:如果 CNAME 记录指向的是 GitHub Pages 的页面,可能出现 404 错误,尽管仓库中已经定义好 404 页面,但是依然还是显示默认的 404 页面,影响浏览体验。这时可以通过修改 Workers 代码让所有的请求就都经 Cloudflare Workers 处理,但是 CNAME 记录依然不可以删掉(好像是该条 DNS 记录必须存在 😛)。修改后的代码如下:

async function handleRequest(request) {
  let requestURL = new URL(request.url)
  let path = requestURL.pathname.split('/')[1]
  let location = redirectMap[path]
  if (location) {
    return Response.redirect(location, 301)
  } else {
    return Response.redirect('https://tsund.cn/404/', 301)
  }
}
addEventListener('fetch', async event => {
  event.respondWith(handleRequest(event.request))
})

const redirectMap = {
  '': 'https://tsund.cn/',
  'blog': 'https://blog.tsund.cn/'
}

这样,访问 https://t.shenke.codes 就会跳转到 https://tsund.cn,并且对于 redirectMap 中尚未定义的跳转规则,会跳转到自定义的 404 页面,从而提高用户浏览体验

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值