为了更好的浏览体验,请不要在本页面禁用 Javascript 🙂
2019-08-16
notion
教程

Notion 使用心得(3)—— 绑定自定义域名

If your native language is English, you can read this article.
你要的这个特性,很多人都提过,我会投一票。
聊天结束...... 然后就会鸽到 notion 倒闭也没有半点消息。
自定义域名是个很常见的需求,很多 Notion 用户拿 Notion 作博客,想给自己绑定个性化的域名却发现没有很好的途径,最后域名只能做个转发,跳转到 Notion 官方页面。
考虑到很多 Notion 用户并非程序员,所以这个文章不会解释过多的技术细节,是新手向的教程。
按照下面的教程做完,将会实现。
1.
通过自己的域名访问 Notion
2.
浏览器地址上显示自己的域名
3.
访问页面时会有一定程度的加速效果
准备工作
域名一个
Cloudflare 帐号一枚 (后面简称 cf)
操作过程
1.
域名 DNS 服务器设置为 cf (略)。
2.
为域名配置一条 a记录,ip地址随便填(不知道填什么就 ping 下 baidu ,例如 220.181.38.148 ),但是要通过 cf proxy,
3.
配置 worker
网址链接
Worker 代码
复制下面代码。
第一行改为你的域名。
第二行改为你想让访问者看到的首页地址。
例如 我想要用户 访问 agodrich.com 时,跳转到指定的页面(Home 页)
const MY_DOMAIN = "your domain" const START_PAGE = "star page url" addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request)) }) const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, HEAD, POST,PUT, OPTIONS", "Access-Control-Allow-Headers": "Content-Type", } function handleOptions(request) { if (request.headers.get("Origin") !== null && request.headers.get("Access-Control-Request-Method") !== null && request.headers.get("Access-Control-Request-Headers") !== null) { // Handle CORS pre-flight request. return new Response(null, { headers: corsHeaders }) } else { // Handle standard OPTIONS request. return new Response(null, { headers: { "Allow": "GET, HEAD, POST, PUT, OPTIONS", } }) } } async function fetchAndApply(request) { if (request.method === "OPTIONS") { return handleOptions(request) } let url = new URL(request.url) let response if (url.pathname.startsWith("/app") && url.pathname.endsWith("js")) { response = await fetch(`https://www.notion.so${url.pathname}`) let body = await response.text() try { response = new Response(body.replace(/www.notion.so/g, MY_DOMAIN).replace(/notion.so/g, MY_DOMAIN), response) // response = new Response(response.body, response) response.headers.set('Content-Type', "application/x-javascript") console.log("get rewrite app.js") } catch (err) { console.log(err) } } else if ((url.pathname.startsWith("/api"))) { response = await fetch(`https://www.notion.so${url.pathname}`, { body: request.body, // must match 'Content-Type' header headers: { 'content-type': 'application/json;charset=UTF-8', 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36' }, method: "POST", // *GET, POST, PUT, DELETE, etc. }) response = new Response(response.body, response) response.headers.set('Access-Control-Allow-Origin', "*") } else if (url.pathname === `/`) { let pageUrlList = START_PAGE.split("/") let redrictUrl = `https://${MY_DOMAIN}/${pageUrlList[pageUrlList.length-1]}` return Response.redirect(redrictUrl, 301) } else { response = await fetch(`https://www.notion.so${url.pathname}`, { body: request.body, // must match 'Content-Type' header headers: request.headers, method: request.method, // *GET, POST, PUT, DELETE, etc. }) } return response }
JavaScript
世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。 —— 罗曼·罗兰巨人三传
Build with gatsby,react,material-ui and Copyright 2019 Mayne Powered by gine-blog