如何打造網址縮短器
網址縮短器會把一個很長的網址存在一個短代碼之下,並把造訪短連結的人重新導向到原本的網址。核心非常小:一張資料表加上一條重新導向路由,所以它是經典的入門專案。真正讓一個縮短器有用的,是其他的部分:短網域、自訂代稱、點擊次數、可編輯連結指向的地方,以及防止濫用者利用你的網域隱藏釣魚連結。一開始就要決定它是給你和你的團隊用,還是對外開放,因為公開的縮短器很快就會吸引濫用。
網址縮短器需要什麼
資料
| 資料表 | 欄位 |
|---|---|
| 連結 | 短代碼、目的地網址、擁有者、標題、建立日期、啟用旗標、可選的到期時間 |
| 點擊 | 所屬連結、時間、來源頁面、國家、裝置類型 |
| 網域(可選) | 自訂短網域及其擁有者 |
在短代碼上建立唯一索引。兩個連結擁有相同的代碼,是絕對不能發生的一個錯誤。
頁面與路由
- 重新導向路由——
/{code}查詢代碼並重新導向。這是大多數訪客唯一會接觸到的路由,所以它必須很快,而且絕不顯示你應用程式的介面。 - 建立連結——貼上網址,可選擇自訂代稱,取得附有複製按鈕的短連結。
- 連結列表——你的連結,附點擊次數、搜尋,以及開關。
- 連結詳情——隨時間變化的點擊次數、主要來源頁面、國家、裝置。可編輯目的地。
- 找不到頁面——用於未知或已停用的代碼。
- 每個連結的 QR Code——加入成本很低,而且常被要求。
決定與取捨
重新導向類型。 301(永久)重新導向可能會被瀏覽器快取,所以回訪的人會跳過你的伺服器:你會漏掉點擊,也無法再為他們更改目的地。如果你要追蹤點擊或允許編輯,就使用 302 或 307。大多數追蹤型縮短器都是這麼做的。
短代碼。 六到七個字元(字母與數字)的隨機代碼很難猜,而且空間充足。如果人們會手動輸入連結,要避免容易混淆的字元(0/O、1/l)。依序產生的代碼會透露你有多少連結,也讓任何人能一路走訪。
自訂代稱。 /launch 勝過 /x7Kp2q。保留你的應用程式會用到的字(login、api、admin),如果工具是公開的,就封鎖不當的代稱,並決定代稱是否區分大小寫。不區分大小寫比較友善。
速度。 縮短器會在每次造訪前增加一次跳轉。把重新導向路由保持為單一的索引查詢,並在送出重新導向之後(或在背景中)記錄點擊,這樣追蹤永遠不會拖慢訪客。在閒置時會休眠的主機上,安靜一段時間後的第一次造訪可能會稍慢;對於個人或團隊內部工具來說,這通常可以接受。
點擊分析與隱私。 計算點擊次數、來源與大致的國家是很標準的做法。儲存完整的 IP 位址並建立個人的側寫,則是隱私法規開始適用的地方。只儲存你真正會看的資料,並盡可能彙總。參見如何為你的應用程式加入分析功能。
網域。 連結只能和它的網域一樣短。購買一個短網域並指向應用程式,參見如何連接自訂網域。許多主機比起裸的根網域,更偏好子網域(例如 go.yourbrand.com),因為比較容易連接。
濫用。 如果任何人都能建立連結,垃圾訊息製造者就會用你的網域來偽裝釣魚與惡意軟體,而你的網域最後可能會被列入封鎖清單。對於公開的縮短器:要求帳號、限制建立頻率、用 Google Safe Browsing 等惡意網址清單檢查目的地、封鎖指向縮短器本身的連結(避免重新導向迴圈),並建立一個能立即停用任何連結的管理開關。只給團隊內部使用的私人縮短器可以避開大部分這些問題。
一個有效的首次提示
為我的團隊打造一個網址縮短網頁應用程式。已登入的使用者貼上目的地網址,會得到一個隨機 7 個字元的短連結(不使用 0、O、1 或 l),也可以選擇自訂代稱。代稱必須唯一且不區分大小寫;保留 login、api、admin、app 與 settings。公開路由 /{code} 用單一的索引查詢找到代碼,並回傳 302 重新導向。記錄每次點擊(時間、來源頁面、國家、裝置類型,不儲存完整 IP 位址),而且不延遲重新導向。未知或已停用的代碼顯示簡單的找不到頁面。使用者可以看到他們的連結列表與點擊次數、編輯目的地、停用連結、下載 QR Code,並開啟詳情頁,查看每日點擊、主要來源與國家。驗證目的地必須是 http 或 https 網址,且不能是指向此縮短器的連結。所有資料存在資料庫中。
建置步驟
- 建立與重新導向。 建立一個連結,並在無痕視窗中打開。確認回應是 302,而不是一個用 JavaScript 再跳轉的頁面。
- 代碼與代稱。 試試重複的代稱、保留字、大小寫混用,以及非常長的網址。
- 點擊追蹤。 從幾個裝置點擊,檢查次數與來源。
- 編輯與停用。 更改目的地,確認舊的短連結現在指向新的地方;停用一個連結,確認它停止運作。
- 驗證。 試試
javascript:連結、指向縮短器本身的連結,以及格式錯誤的網址。這些都應該在伺服器端被拒絕。 - 網域。 連接你的短網域,並在上面測試連結。
- 濫用防護(如果工具會公開):限流、目的地檢查,以及管理員可查看最近連結的頁面。
常見錯誤
- 301 重新導向搭配點擊追蹤。 瀏覽器會快取它們,你的數字就會出錯。
- 在頁面中重新導向。 先載入應用程式,再用 JavaScript 重新導向,每次點擊都會感覺很慢。要在伺服器端重新導向。
- 代碼沒有唯一性限制。 碰撞遲早會發生。
- 沒有任何控管的開放公共縮短器。 它一定會被濫用,而你網域的信譽也會跟著受損。
- 接受任何網址協定。 只允許 http 與 https 目的地。
- 搬家時遺失連結。 自己擁有短網域,這樣連結在更換主機後仍然能用。
什麼時候現成產品是更好的選擇
成熟的連結管理服務提供品牌網域、詳細的分析、團隊功能、QR Code、整合,以及濫用處理,開箱即用。如果連結是你行銷的核心,而你又不想做任何維護,那就付費使用一個。
當你想要一個簡單的團隊縮短器並使用自己的網域,而且不想按席位付費;當連結與你自己的產品緊密相連(分享連結、推薦連結、電子郵件中的追蹤連結);或你想完全掌控點擊資料時,就自己打造。它也是很好的第一個後端專案。可以搭配連結型個人頁面一起做,並在對外開放之前,先看過AI 打造應用程式的安全檢查清單。
用 Mythex 建置
在 Mythex 中,你可以在對話中描述縮短器,並在即時預覽中測試重新導向。當應用程式需要時,Mythex 會為連結與點擊加入專用的資料庫。已發佈的應用程式與其資料庫在閒置時會休眠,並在下一次造訪時喚醒,這讓安靜的縮短器運行成本很低。發佈到 mythex.ai 的連結;在 Pro 方案中,你可以連接自己的短網域,或直接在 Mythex 內購買一個(參見自訂網域)。網址縮短器範本提供了一份寫好的起始提示,包含自訂代稱與點擊分析。
常見問題
網址縮短器應該使用 301 還是 302 重新導向?
301 會告訴瀏覽器這次的移動是永久的,所以瀏覽器可能會快取它,下次就跳過你的伺服器,這意味著會漏掉點擊,而且你無法再更改連結指向的地方。大多數會追蹤點擊或允許編輯的縮短器都使用 302 或 307 暫時性重新導向。
短代碼是怎麼產生的?
可以用字母與數字組成的隨機字串,並與現有代碼比對;也可以把資料庫的 ID 以 base 62 編碼。隨機代碼比較難猜;依序產生的代碼則會透露有多少連結,也讓人能依序走訪。六到七個隨機字元就有數十億種組合。
我需要短網域嗎?
不需要也能運作,但縮短器的重點就是一個短而值得信任的連結。你自己擁有的短自訂網域,也代表即使你換了主機,連結仍然能繼續運作。
要怎麼防止有人濫用公開的網址縮短器?
要求登入才能建立連結、限制建立連結的頻率、用 Google Safe Browsing 這類惡意網址清單檢查目的地、封鎖把你自己的網域當作目的地,並且讓自己有快速停用連結的方法。