使用 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 链接就能重定向到我自己的掘金文章了。

参考资料

相关推荐
peachSoda75 分钟前
封装一个不同跳转方式的通用方法(跳转外部链接,跳转其他小程序,跳转半屏小程序)
前端·javascript·微信小程序·小程序
@PHARAOH18 分钟前
HOW - 浏览器兼容(含 Safari)
前端·safari
undefined在掘金3904128 分钟前
flutter 仿商场_首页
前端
少卿28 分钟前
react-native图标替换
前端·react native
熊猫钓鱼>_>34 分钟前
TypeScript前端架构与开发技巧深度解析:从工程化到性能优化的完整实践
前端·javascript·typescript
JYeontu1 小时前
肉眼难以分辨 UI 是否对齐,写个插件来辅助
前端·javascript
fox_1 小时前
别再踩坑!JavaScript的this关键字,一次性讲透其“变脸”真相
前端·javascript
盛夏绽放1 小时前
uni-app Vue 项目的规范目录结构全解
前端·vue.js·uni-app
少卿2 小时前
React Native Vector Icons 安装指南
前端·react native
国家不保护废物2 小时前
Vue组件通信全攻略:从父子传到事件总线,玩转组件数据流!
前端·vue.js