Nation綁定域名-你的筆記就是你的博客!

可以實現什么:

  1. 用自己的域名來訪問特定的notion頁
  2. 將notion打造成個人博客, 便可實現目前最簡單的博客網站搭建
  3. 還可以將notion作為自己的圖床, 隨便存文件照片!

為Notion公共頁面提供自定義域名可能是最受要求的功能之一,而且目前看起來還不支持這樣做(可以理解)但是,這里有一個使用Cloudflare Workers的解決方案。

第一步: 將你的域名服務器代理至Cloudflare

Cloudflare需要控制您的DNS桌粉,因此請按照本指南將名稱服務器切換到它們睁本。不用擔心锣杂,您的DNS設置將保持不變渐溶。

Changing your domain nameservers to Cloudflare

這一步很重要,大致可以理解為以下步驟:

  1. 將你原來的nameservers更改為Cloudflare提供給你的nameserver

    image
  2. 比如我的域名是在阿里云的, 進行如下操作即可(修改后需要過一段時間等Cloudflare發(fā)郵箱給你)

    image
    image
  3. 在域名解析里添加一條A的記錄,IP隨便填

    image
  4. 當收到郵件后,你的Cloudflare的Overview頁會變成這樣,就說明更改nameservers成功了

    image
  5. 在Cloudflare的DNS頁里也添加一條A的記錄,IP隨便填但是要保證Proxy Status是通的

    image

第二步: 添加工程腳本

Big thanks to Mayne for writing this worker script. You can find the original in this gist.

以下是為你代理域的代碼,因此請執(zhí)行以下操作:

  1. Click on the ”Workers” tab

  2. Click “Launch Editor”

  3. On the left, click ”Add Script”

  4. Name it notion-worker

    image

    Once you have followed those steps, copy this script into that new file.

const MY_DOMAIN = "example.com"
const START_PAGE = "https://www.notion.so/link/to/your/public/page"

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
}

現在饭寺,你已經添加了腳本,您需要更改頂部的兩個const:

  1. MY_DOMAIN 表示你需要代理的域名-你自己的域名 ( E.G. example.com)

  2. START_PAGE 表示你代理的目標域名地址-notion的地址(E.G.https://www.notion.so/link/to/your/public/page)

保存你的腳本,然后返回上一層

第三步: 添加一個通配符路徑才處理你的所有流量

image

在這里添加你的域名和通配符,然后在你Worker這一欄選擇你剛剛配置的腳本名就可以了

??最后這里有我的示例tomatoro.space

到這里為止就大功告成了! 這時候你訪問你自己的域名就可以看到notion的頁面啦, 以后用notion寫博客也可以使用自己的域名了, 可謂是相當酷炫了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末叫挟,一起剝皮案震驚了整個濱河市艰匙,隨后出現的幾起案子,更是在濱河造成了極大的恐慌抹恳,老刑警劉巖员凝,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異奋献,居然都是意外死亡健霹,警方通過查閱死者的電腦和手機旺上,發(fā)現死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糖埋,“玉大人宣吱,你說我怎么就攤上這事⊥穑” “怎么了征候?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祟敛。 經常有香客問我疤坝,道長,這世上最難降的妖魔是什么垒棋? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任卒煞,我火速辦了婚禮,結果婚禮上叼架,老公的妹妹穿的比我還像新娘畔裕。我一直安慰自己,他們只是感情好乖订,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布扮饶。 她就那樣靜靜地躺著,像睡著了一般乍构。 火紅的嫁衣襯著肌膚如雪甜无。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天哥遮,我揣著相機與錄音岂丘,去河邊找鬼。 笑死眠饮,一個胖子當著我的面吹牛奥帘,可吹牛的內容都是我干的。 我是一名探鬼主播仪召,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼寨蹋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扔茅?” 一聲冷哼從身側響起已旧,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎召娜,沒想到半個月后运褪,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年秸讹,在試婚紗的時候發(fā)現自己被綠了胁后。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡嗦枢,死狀恐怖攀芯,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情文虏,我是刑警寧澤侣诺,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站氧秘,受9級特大地震影響年鸳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜丸相,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一搔确、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灭忠,春花似錦膳算、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至映琳,卻和暖如春机隙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萨西。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工有鹿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谎脯。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓葱跋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親穿肄。 傳聞我的和親對象是個殘疾皇子年局,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355