歡迎光臨
每天分享高質量文章

如何使用 Apache 構建 URL 縮短服務 | Linux 中國

用 Apache HTTP 服務器的 mod_rewrite 功能創建你自己的短鏈接。
— Ben Cotton


致謝
編譯自 | 
https://opensource.com/article/18/7/apache-url-shortener
 
 作者 | Ben Cotton
 譯者 | geekpi ???共計翻譯:791.5 篇 貢獻時間:1791 天

用 Apache HTTP 服務器的 mod_rewrite 功能創建你自己的短鏈接。

很久以前,人們開始在 Twitter 上分享鏈接。140 個字符的限制意味著 URL 可能消耗一條推文的大部分(或全部),因此人們使用 URL 縮短服務。最終,Twitter 加入了一個內置的 URL 縮短服務(t.co[1])。

字符數現在不重要了,但還有其他原因要縮短鏈接。首先,縮短服務可以提供分析功能 —— 你可以看到你分享的鏈接的受歡迎程度。它還簡化了製作易於記憶的 URL。例如,bit.ly/INtravel[2]https://www.in.gov/ai/appfiles/dhs-countyMap/dhsCountyMap.html更容易記住。如果你想預先共享一個鏈接,但還不知道最終地址,這時 URL 縮短服務可以派上用場。。

與任何技術一樣,URL 縮短服務並非都是正面的。通過屏蔽最終地址,縮短的鏈接可用於指向惡意或冒犯性內容。但是,如果你仔細上網,URL 縮短服務是一個有用的工具。

我們之前在網站上發佈過縮短服務的文章[4],但也許你想要運行一些由簡單的文本檔案支持的縮短服務。在本文中,我們將展示如何使用 Apache HTTP 服務器的 mod_rewrite 功能來設置自己的 URL 縮短服務。如果你不熟悉 Apache HTTP 服務器,請查看 David Both 關於安裝和配置[5]它的文章。

創建一個 VirtualHost

在本教程中,我假設你購買了一個很酷的域名,你將它專門用於 URL 縮短服務。例如,我的網站是 funnelfiasco.com[6],所以我買了 funnelfias.co[7] 用於我的 URL 縮短服務(好吧,它不是很短,但它可以滿足我的虛榮心)。如果你不將縮短服務作為單獨的域運行,請跳到下一部分。

第一步是設置將用於 URL 縮短服務的 VirtualHost。有關 VirtualHost 的更多信息,請參閱 David Both 的文章[8]。這步只需要幾行:

  1.     *:80>

  2.         ServerName funnelfias.co

  3.    

創建重寫規則

此服務使用 HTTPD 的重寫引擎來重寫 URL。如果你在上面的部分中創建了 VirtualHost,則下麵的配置跳到你的 VirtualHost 部分。否則跳到服務器的 VirtualHost 或主 HTTPD 配置。

  1.     RewriteEngine on

  2.     RewriteMap shortlinks txt:/data/web/shortlink/links.txt

  3.     RewriteRule ^/(.+)$ ${shortlinks:$1} [R=temp,L]

第一行只是啟用重寫引擎。第二行在文本檔案構建短鏈接的映射。上面的路徑只是一個例子。你需要使用系統上使用有效路徑(確保它可由運行 HTTPD 的用戶帳戶讀取)。最後一行重寫 URL。在此例中,它接受任何字符併在重寫映射中查找它們。你可能希望重寫時使用特定的字串。例如,如果你希望所有縮短的鏈接都是 “slX”(其中 X 是數字),則將上面的 (.+) 替換為 (sl\d+)

我在這裡使用了臨時重定向(HTTP 302)。這能讓我稍後更新標的 URL。如果希望短鏈接始終指向同一標的,則可以使用永久重定向(HTTP 301)。用 permanent 替換第三行的 temp

構建你的映射

編輯配置檔案 RewriteMap 行中的指定檔案。格式是空格分隔的鍵值儲存。在每一行上放一個鏈接:

  1.     osdc https://opensource.com/users/bcotton

  2.     twitter https://twitter.com/funnelfiasco

  3.     swody1 https://www.spc.noaa.gov/products/outlook/day1otlk.html

重啟 HTTPD

最後一步是重啟 HTTPD 行程。這是通過 systemctl restart httpd 或類似命令完成的(命令和守護行程名稱可能因發行版而不同)。你的鏈接縮短服務現已啟動並運行。當你準備編輯映射時,無需重新啟動 Web 服務器。你所要做的就是儲存檔案,Web 服務器將獲取到差異。

未來的工作

此示例為你提供了基本的 URL 縮短服務。如果你想將開發自己的管理接口作為學習專案,它可以作為一個很好的起點。或者你可以使用它分享容易記住的鏈接到那些容易忘記的 URL。


via: https://opensource.com/article/18/7/apache-url-shortener

作者:Ben Cotton[10] 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

赞(0)

分享創造快樂