apache 裡有別名 aliases 重定向 redirecting 以及 重寫 rewriting 功能,但並不理解他們之間的聯繫與區別
它們分別是在什麼情況下使用比較合適呢
世界只因有你2017-05-16 17:06:34
聯繫與區別 ... 這個話題可大可小 ... 這三個是完全不同的東西 ...
其中 alias 和 redirect 都是由 mod_alias
实现的 ... rewrite 是由 mod_rewrite
實現的 ...
alias 能實現的功能另外兩個完全實現不了 ...
rewrite 可以實現 redirect 提供的所有功能且不僅於此 ... 當然作為代價 rewrite 的消耗也比較大 ...
使用場景的分別 ...
alias
提供的是 虛擬目錄 的功能 ... 它可以把一個本無法通過 web 訪問的區域映射到 web 上來 ...
舉例而言假如你的網站根是 /var/www
... 通过 alias 可以访问到 /home/sunyanzi/public
...
redirect
提供的是 網頁跳轉 功能 ... 非常簡單的從一個 URL 跳到另一個 URL ...
用個實際的例子舉例 ... 當你訪問 http://sf.gg 的時候就會跳到 / ...
造訪 http://sf.gg/bNT4C 的時候就會跳到這個貼文 ... 這種行為都是 redirect ...
rewrite
提供的是 網頁跳轉 和 改變一個頁面的 URL 的功能 ...
網頁跳轉剛剛解釋過了 ... 改變頁面 URL 的意思是 ... 假如你的網站上有這樣一個功能 ...
http://yoursite.ext/script?model=user&action=detail&username=Sunyanzi
你覺得這個 URL 不好看 ... 你就可以將其 rewrite 為 http://yoursite.ext/u/Sunyanzi
...
和 redirect 的不同之處是當使用者造訪新位址的時候 ... 瀏覽器網址列裡的位址不會改變 ...
rewrite 同時也提供代理功能 ...
也就是說你可以把我的網站上的一個頁面比如 http://mysite.ext/somepage
...
rewrite 到你的網站變成 http://yoursite.ext/anotherpage
...
但前提條件是 rewrite 的目標必須也是在 web 可訪問的區域上的 ...
恩恩 ... 大體就是這樣 ... 有什麼不明白的麼 ..?
其實這些東西網上都有 ... 比我臨時寫的這個答案還更全面 ...
我我 ... 我就是閒的我 ... 我還手打一遍 ... 求安慰 ...