使用 cloudflare worker 实现域名重定向

使用 cloudflare worker 实现域名重定向

我希望用自己的域名,对一个特定链接做重定向。实现 juejin.ruan-cat.com 重定向到 juejin.cn/user/240614... 。提供一个更加短小易于记忆的域名,访问我的掘金博客。

方案选型

我选择用新建 cloudflare worker 的方式,实现重定向。通过编写边缘运行时的函数,用 301 的方式,实现重定向。

前提准备

  1. 有自己的域名,且已经托管到 cloudflare 内。

实施步骤

核心步骤分为以下几步:

  1. 新建 worker。
  2. 部署 worker。
  3. 配置自定义域名。

新建 worker

登录 cloudflare,在右上角选择新建,新建一个 worker。

从 Hello World! 开始

因为我们的需求仅仅是新建一个在 cloudflare 运行的边缘运行时函数,因此不需要选择模板,也不需要导入 git 存储库。直接编写代码即可。

故选择从 Hello World! 开始选项。

进来后的界面如下:

更换 worker 名称

这里我为了便于记忆,将 worker 名称改成 juejin-posts-redirect 。那么这个 worker 部署成功后,会自动生成一个连接 juejin-posts-redirect.1219043956.workers.dev ,稍后我们再通过配置自定义域名的方式,再重定向到这个链接即可。

部署 worker

我们先部署 worker,稍后再更改 worker 即可。点击右下角的部署按钮即可。

部署成功

部署成功的界面如下:

测试链接

在浏览器访问该链接,看到预期的 Hello World! 字样,证明该链接是正常可用的。

进入到修改 worker 的在线编辑界面

点击编辑代码按钮:

进入到如下界面:

编写 worker

借助 AI 帮我们编写 worker,这里我使用的是 claude code,提示词如下:

markdown 复制代码
请深度思考。
我准备使用 cloudflare worker 实现域名重定向,请为我编写一个边缘运行时的函数,实现该 worker 重定向到【https://juejin.cn/user/2406144257559271/posts】地址。

最终生成的代码如下:

js 复制代码
/**
 * Cloudflare Worker 域名重定向脚本
 * 重定向到指定的掘金用户页面
 */

export default {
	async fetch(request, env, ctx) {
		// 目标重定向地址
		const targetUrl = "https://juejin.cn/user/2406144257559271/posts";

		try {
			// 获取请求的URL
			const requestUrl = new URL(request.url);

			// 构建重定向响应
			const response = new Response(null, {
				status: 301, // 永久重定向
				headers: {
					Location: targetUrl,
					"Cache-Control": "public, max-age=86400", // 缓存24小时
					"X-Redirect-Reason": "Domain redirect to Juejin profile",
				},
			});

			return response;
		} catch (error) {
			// 错误处理:如果重定向失败,返回错误页面
			return new Response(
				`<!DOCTYPE html>
        <html>
        <head>
          <title>Redirect Error</title>
          <meta charset="utf-8">
        </head>
        <body>
          <h1>重定向错误</h1>
          <p>无法完成重定向,请直接访问:<a href="${targetUrl}">${targetUrl}</a></p>
          <p>错误信息:${error.message}</p>
        </body>
        </html>`,
				{
					status: 500,
					headers: {
						"Content-Type": "text/html; charset=utf-8",
					},
				},
			);
		}
	},
};

重新部署并测试

点击重新部署并测试代码,重新访问链接,注意到 worker 可以直接跳转到期望的指定链接,可以看到自己的掘金文章了。证明该 worker 正常可用。

下次再继续编辑的访问入口

如果我们日后还需要修改 worker,可以在这里找到入口:

按照下图所示,找到编辑代码按钮。

配置自定义域名

最后一步是配置便于记忆的自定义域名,这样连接就足够语义化,便于记忆,且美观。

  1. 在 cloudflare worker 的仪表盘内,找到我们新建的 juejin-posts-redirect worker。
  2. 点击设置 tab 栏。
  3. 点击添加按钮。

点击按钮后可以看到右侧抽屉栏,我们点击自定义域一栏。如下图所示:

输入 juejin.ruan-cat.com ,点击添加域按钮即可。

添加自定义域成功

在 worker 仪表盘内,可以看到我们增加了新的自定义域。

在 cloudflare 的 DNS 内,可以看到我们自定义域名绑定到 worker 上面了。

至此已完成配置。访问 juejin.ruan-cat.com 链接就能重定向到我自己的掘金文章了。

参考资料

相关推荐
方也_arkling21 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
毕设源码-朱学姐21 小时前
【开题答辩全过程】以 基于web教师继续教育系统的设计与实现为例,包含答辩的问题和答案
前端
web打印社区21 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
RFCEO21 小时前
前端编程 课程十三、:CSS核心基础1:CSS选择器
前端·css·css基础选择器详细教程·css类选择器使用方法·css类选择器命名规范·css后代选择器·精准选中嵌套元素
Amumu121381 天前
Vuex介绍
前端·javascript·vue.js
We་ct1 天前
LeetCode 54. 螺旋矩阵:两种解法吃透顺时针遍历逻辑
前端·算法·leetcode·矩阵·typescript
2601_949480061 天前
【无标题】
开发语言·前端·javascript
css趣多多1 天前
Vue过滤器
前端·javascript·vue.js
理人综艺好会1 天前
Web学习之用户认证
前端·学习
We་ct1 天前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表