可能完賽我回再重新把文章都過一次(現在每天都在努力擠內容已經沒什麼時間啦?,有在追內容的讀者應該都看的出來我每篇都是誠意滿滿,訂閱一下啦),讓整篇讀起來更通順,還有最重要的,每篇都加上一張成功的封面圖(欸不是)。
今天要聊的這個模組功能運用範圍挺廣泛的,據我所知目前為止都還是要另外下載安裝 ─ URL Rewrite。他的功能也就跟他的名字一樣直白,能夠依據特定條件對 URL 進行覆寫,改完之後的 URL 就像中了面目全非腳,啊,應該說是還我漂漂拳,變成你想要的樣子啦。因為條件應對靈活、能夠處理絕大多數跟 URL 有關的情況,算是非預設安裝但相當常被使用的模組。
URL rewrite 的好處是什麼呢?你能夠做到把 http://www.this.is.your.website/and/very/long/url?and=some&query=string 縮寫成 http://your.website/longurl 。縮短以外,也能讓網址更方便記憶,甚至能影響網站的 SEO 排名、隱藏一些資訊避免惡意攻擊,對整體網站設定來說是個重要的步驟。
既然要安裝,這裡分享一下安裝的步驟,首先進入官方載點 URL Rewrite,下載完會是一個 exe,沒有什麼特別要注意的,就是一直下一步到裝完囉。
裝完後重開一次 IIS Manager 就會看到囉。
點進來長得像這樣,可以看到下圖介面,上方屬 Inbound,下方屬 Outbound,這裡的 In / Out 是相對 Request 對 IIS 而言。Inbound 指的是 Request 到 IIS 這段,如 URL 的對應轉換;Outbound 指的是 IIS 回去的 Respnse,多用於 Header調整。
在新增規則的頁面,可以明確看到被區分為四類,我們會快速介紹一下這些 Rule Template 的目的。
Inbound rules
Inbound and Outbound Rules : 這塊地設定會兼具 Inbound 和 Outbound 的設定可能
Outbound rules
Search Engine Optimization (SEO)
簡單帶過各個模板,我們還是看一下空白模板的長相。
收合簡單看的話就是該 Rule 的名稱,要被這個 Rule 處理的 URL (Match URL / Match),更細部定義要作用的情境 (Conditions),對符合條件的 URL 要做的事情 (Action)。
Inbound 多了一個 Server Variables,是透過變數來描述一些特定情況,詳情可參考 IIS Server Variables ,在 Rule 的撰寫會有幫助;Outbound 多了一個 Precondition,用於可以先多寫一層是某該 Rule 要套用到那些情況的 Response(避免非預期的 Response 被調整到,也可以減輕 CPU 層面處理判斷的負擔,如提前先定義不處理 content-type 為 “text/html” 的 Response)。
要做 URL rewrite 的規則撰寫,有個很重要的元素在裡面:Regular Expression,中文叫做正則表達式,或是正規表達式,都有聽過人這樣叫。正則表達式是做什麼用的呢?比如 a 和 z 要被視為同一種情況做處理,正則表達式就會用 [a-z] 來講述小寫字母的情況,其他如數字表達、符號行為定義等等都是正則表達式能做到的範圍。基本上正則表達式你想精通,坊間都已經有整本在寫正則表達式該怎麼寫的書,內容基本不是我這邊講得完的。如果你今天第一次看到這個詞,可以去查一下,簡單的了解幾條比較簡單的規則,如 \n \W,對你日常的文字編輯相關也有幫助,現代的文字編輯器基本都有透過正則表達式做取代的功能,處理大量重複作業的時候這個能省去非常多時間。這邊分享一篇以前我寫過關於正則表達式其中一小塊的知識分享,有興趣也可以讀讀 【Regex】用正規表達式取代時保留部分內容不被替換。
實際上會運用到 URL 的情境很多,上面沒辦法包山包海講全部,你只要知道要對 URL 做操作、Header 調整的時候,能夠找這個模組幫幫忙就行了。網路上很多人寫好的 Rule 可以做參考,如 Http 轉 Https,汰換舊目錄路徑之類的。關鍵字下 URL rewrite example 加上你的情境,就會有各種先人留下的資訊可以參考,希望透過這篇讓你對這個模組有個基本認識,知道當你有需求的時候,能夠來找這個模組。