如何建立網址縮短服務
網址縮短服務會把一個很長的網址儲存在一個短代碼之下,並把任何訪問這條短連結的人重新導向至原網址。它的核心非常小,只需要一張資料表及一條重新導向路由,所以是經典的入門專案。使真正有用的服務與眾不同的,是其餘部分:短網域、自訂別名、點擊次數、可編輯連結的目的地,以及防止濫用者利用你的網域隱藏釣魚連結。應及早決定它是供你及團隊私人使用,還是公開予大眾使用,因為公開的服務很快便會吸引濫用。
網址縮短服務需要什麼
資料
| 資料表 | 欄位 |
|---|---|
| 連結 | 短代碼、目的地網址、擁有人、標題、建立日期、是否啟用、可選的到期時間 |
| 點擊 | 所屬連結、時間、來源網址、國家、裝置類型 |
| 網域(可選) | 自訂短網域及其擁有人 |
短代碼應設有唯一索引。兩條連結使用相同代碼,是一個必須完全避免的錯誤。
頁面及路由
- 重新導向路由:
/{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 等惡意網址清單檢查目的地、封鎖把你自己的網域作為目的地的做法,並讓自己可以快速停用任何連結。