2026年7月5日发布!有个人网站和朋友,你就该搭建网络环,两种搭建方法揭秘
你需要一个网络环!没错,就是你。如果你(1)有个人网站,(2)还有朋友,那就应该搭建一个网络环。
什么是网络环呢?其实它就是一个网站的循环链表,这些网站围绕某个特定主题,这个主题可以是一项爱好、一种热情,或者就是你的朋友们。网络环背后的故事相当丰富,你可以点击 [这里](https://www.brisray.com/web/webring-history.htm) 了解更多,但只需知道它很有趣就行。
如何搭建网络环呢?
简单但繁琐的方法
手动让你的圈子里的网站相互链接,形成一个循环。网站 A 链接到网站 B,网站 B 链接到网站 C,网站 C 再链接回网站 A。
稍复杂的方法
搭建一个 Web 服务器,存储一个包含你所有朋友网站信息的 JSON 文件,然后设置 /prev 和 /next 路由,实现自动导航。
import ring from './ring.json'; const {members} = ring; export default { /** * 这是 Cloudflare Worker 的标准 fetch 处理程序 * * @param request - 客户端提交给 Worker 的请求 * @param env - 用于引用 wrangler.jsonc 中声明的绑定的接口 * @param ctx - Worker 的执行上下文 * @returns 要发送回客户端的响应 */ async fetch(request, env, ctx): Promise { const pathname = new URL(request.url).pathname; // 获取来源 const referrer = new URL(request.url).searchParams.get('from') || request.headers.get('referer') || request.headers.get('referrer') || ''; const currentMember = members.find(member => member.url === referrer); if (!currentMember) { return new Response('未找到成员', {status: 404}); } switch (pathname) { case '/': return new Response('Zadu'); case '/next': const nextMember = members[(members.indexOf(currentMember) + 1) % members.length]; // 重定向到下一个成员的 URL return Response.redirect(nextMember.url, 302); case '/prev': const prevMember = members[(members.indexOf(currentMember) - 1 + members.length) % members.length]; // 重定向到上一个成员的 URL return Response.redirect(prevMember.url, 302); case '/random': const randomMember = members[Math.floor(Math.random() * members.length)]; // 重定向到一个随机成员的 URL return Response.redirect(randomMember.url, 302); default: // 如果路径名与任何已知路由都不匹配,返回 404 响应 return new Response('未找到', {status: 404}); } }, } satisfies ExportedHandler;个人使用了 Cloudflare Worker 来实现,因为它是免费的,而且预计不会有大量访问。你可以点击 [这里](https://github.com/4shub/ringdt) 查看完整的源代码。
更多内容:[美国建国 250 周年:未完的故事](/writings/2026/july/america-a-continuing-story/)