無論我們是要引用網站的資源,還是做重新導向,除非是外部的資源,不然使用相對路徑絕對是優選,在 ASP.NET 的世界裡面我們用來表達根目錄有人會用 /(Slash)
,有人會用 ~/(Tilde Slash)
,但它們兩個的差別在哪?
公佈答案,/
代表的是網站根目錄,~/
代表的是應用程式根目錄,我用範例來說明,底下我在 IIS 弄了個網站,而網站的實體路徑指向某個 ASP.NET MVC 的應用程式。
當我瀏覽首頁的時候我強制重新導向到登入頁,用 / 跟 ~/ 都測試看看。
測試結果是「沒差別」,都能正確重新導向到登入頁。
然後我在網站底下新增一個 abc
應用程式,實體路徑指向跟網站相同的應用程式。
這時候 / 跟 ~/ 就有差別了,我們瀏覽 abc 就會發現 ~/ 是導向 abc 的登入頁。
幹程式設計這一行遇到相同問題但不同解法,卻不知其所以然就是替自己在未來埋下一顆地雷,何時會踩中自爆不知道。