无服务器实现 301 跳转(with Cloudflare)
2020年7月16日 · 407 字 · 1 分钟
原因
我想通过 git.batkiz.com 访问我的 Azure DevOps 主页,但其不支持 CNAME,同时我又不想通过服务器来 301 跳转,所以我就寻思着能不能找个方法白嫖。
下面是通过 Cloudflare 白嫖的教程。
完整步骤
新建 workers
workers 即 Cloudflare 推出的 serverless 云函数。在 主页 直接点击 workers 新建一个,名字随意,代码如下:
async function handleRequest() {
return Response.redirect(someURLToRedirectTo, code);
}
addEventListener("fetch", async (event) => {
event.respondWith(handleRequest());
});
/**
* @param {Request} url where to redirect the response
* @param {number?=301|302} type permanent or temporary redirect
*/
const someURLToRedirectTo = "https://batkiz.visualstudio.com/";
const code = 301;
部署好之后即可通过其 workers.dev
域名访问了,其会在访问时 301 跳转到指定页。
可是 workers.dev
的域名太长了,也与最初的需求(通过 git.batkiz.com 访问我的 Azure DevOps 主页)不符。因此需要通过某种手段把此域名 CNAME 到 git.batkiz.com 这个域名上。
但云函数显然是没有 CNAME 这个说法的,所以需要借助其他路由来实现。
其他路由
从 dash 点进需要的域名设置,进入其 workers tab,选择添加路由即可。
路由示例:*git.batkiz.com/*
,选择匹配的 worker 即可。
而后进入 dns 编辑页,给所用的域名(本例中为 git.batkiz.com)添加一个 A 记录,指向 192.2.0.1
。
然后就能用啦!