logo NodeSeekbeta

💎 如何使用 kee|bento | bio|linktr 等便当产品铸造自己的个人入口页,并自定义域名

产品

产品 特点
kee.so 体验最好
bento.me 界面最好看,被linktree收购
bio.link 还可以
linktr.ee 最有名,也最丑

以上为在世界范围内比较知名的几个个人落地页产品,很方便的拖拽即可构建你的个人分发、导航、主页,创建后的链接,你可以添加到你的抖音介绍、小红书介绍、或者任何地方,创建过程非常简单,不再赘述。

1.png
2.png


如何自定义域名

很不幸,我所常用的bento和kee都无法自定义域名,另外两个我没有深究,但我们可以使用反向代理、iframe等方式绕道自定义。


CloudFlare Workers 反向代理法(适用 kee.so)

使用workers可以轻松反代大部分的网站,但是有些网站比较特殊,静态资源和页面资源以及API资源的请求路径不一,这导致在反代时需要做一些特殊处理才能成功。

拿我最近使用的kee.so举例:

  1. 将你的域名接入CF
  2. 创建Worker,编写反向代理代码,部署(代码在下面,以kee.so举例)
  3. 给Worker绑定自定义域名和路由
  4. 成功

3.png
4.png
5.png





export default {
  async fetch(request, env, ctx) {
    return handleRequest(request, env, ctx);
  },
};

async function handleRequest(request,env,ctx) {

  

  const fullUrl = request.url;
  const url = new URL(fullUrl);
  const hostname = url.hostname;
  const originalPath = url.pathname

  const domain = "你最终用来访问的域名,不加https://,例如  abc.com 即可";

  // 不用改
  const keesoRoot = "https://kee.so/"
  const keesoDomain = "https://kee.so"
  const keesoApi = "https://api.kee.so"
  
  // 要代理到的目标地址,用户名为: 假设你kee.so的主页是kee.so/hahahaha,那么用户名就是hahahaha
  var targetUrl = keesoRoot + "你的用户名";

  // kee.so的特殊处理
  if (originalPath != "/" && originalPath != ""){
    targetUrl = keesoDomain + url.pathname;
  }
  if (originalPath == "auth/detail" || originalPath == "/auth/detail"){
    targetUrl = keesoApi + url.pathname;
  }

  // kee.so的特殊处理
  if (originalPath.indexOf("_next/static/css/static/favicon.svg") != -1 || originalPath.indexOf("_next/static/css/favicon.ico") != -1 ){
      return new Response("🤣", {
        status: 200,
      });
  }

  // 反代
  const targetRequest = new Request(targetUrl, {
    method: request.method,
    // headers: request.headers,
    headers :{
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET,HEAD,POST,OPTIONS',
      'Origin': keesoDomain
    },
    body: request.body,
  })

  const targetResponse = await fetch(targetRequest)
  const text = await targetResponse.text()

  // 替换
  var modifiedText = text.replace(/api.kee\.so/g, '你最终用来访问的域名,不加https:// 例如  abc.com 即可')
  //  modifiedText = modifiedText.replace(/Kee/g, ' ')
    
  const response = new Response(modifiedText, {
    status: targetResponse.status,
    statusText: targetResponse.statusText,
    headers: targetResponse.headers,
  })

  return response
}


Vercel iframe法(适用 bento.me )

  1. 在github创建一个仓库,仓库内创建一个单页index.html
  2. 编写index.html内容为以下代码
  3. 在Vercel关联github后,部署刚才创建的仓库项目
  4. 在Vercel给这个项目绑定个域名,即可
<!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<meta name="referrer" content="never">
		<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1.0,viewport-fit=cover,shrink-to-fit=no">
		<meta name="format-detection" content="telephone=no">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="referrer" content="strict-origin">
		<title>
			Damon
		</title>
	</head>
	<body style="height: 100%;">
		<iframe id="frame" src="你要访问的域名地址" frameborder="0" marginwidth="0" marginheight="0"
		vspace="0" hspace="0" allowtransparency="true" scrolling="auto" allowfullscreen="true"
		style="width: 100%; height: 100%; frameborder:0; position: absolute; top: 0; left: 0;">
		</iframe>
	</body>

</html>


123
  • 收藏 xhj003

  • 支持

  • good

  • xhj003

  • @weiming #1

    搞一个还挺方便的,嘿嘿😊

  • 有没有自建的?搞个静态页面自建不也挺好吗

  • 开启代理能正常访问
    直连会跳出弹窗“load failed” 但也能正常打开
    这是哪里出问题了呢

  • @wangufenzi #7

    更改信息的时候麻烦,就像笔记,Notion、obsidian、flomo、本地txt,使用场景不一样的~

  • @Rational #8

    你是说自定义域名反代之后是吗?可以发给我域名我看看

123

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72978位seeker

🎉欢迎新用户🎉