為什麼要使用 mod_rewrite?

來講什麼是 mod_rewrite (或是其他類似的東西),以 為例,RSS feed 的輸出大致上會長這樣:

http://group.nctu.edu.tw/rss10/darkkiller

我希望把這類的連線要求都交給 rss10.php 處理,變成這樣:

http://group.nctu.edu.tw/rss10.php?g=darkkiller

這就是 mod_rewrite 要做的事情。

那麼用 mod_rewrite 有什麼好處?我可以想到這幾點:

  • 服務的穩定性:對於發展中的平台而言,mod_rewrite 提供了彈性,使得底層的改變 (譬如 rss10.php 變成 rss10-2.php) 不會影響到上層的 URL,對於使用者而言不會有感覺。
  • SEO:Search Engine 會比較偏好沒有 ?& 的 URL。

像無名的 RSS 與文章 (以彎彎的 Blog 為例) 就做的不太好:

  • http://www.wretch.cc/blog/cwwany&rss20=1
  • http://www.wretch.cc/blog/cwwany&article_id=5576574

比較好的作法可能是改成這樣:

  • http://www.wretch.cc/blog/cwwany/rss20
  • http://www.wretch.cc/blog/cwwany/5576574

甚至改成 feed.wretch.cc,一開始先用 VirtualHost 跑在同一台上,以後如果發現 RSS 愈來愈吃重,需要以獨立的機器分出來就更方便了。

6 thoughts on “為什麼要使用 mod_rewrite?”

  1. 關於無名,我想到的是效能問題,小網站這樣作沒問題,大網站要依賴 mod_rewrite 也許會有點吃力。
    而且自己寫程式也是可以達到 mod_rewrite 的功能的.. 並不一定要用到 mod_rewrite

    另外的問題是無名有 reverse proxy,這也會影響一些設計上的考量..

  2. 無名有大到做 mod_rewrite 會吃力的情況嗎? hmm...
    不然師程工是養來幹嘛的?為什麼國外的網站流量比大的都有,無名卻沒有咧?
    其實我想講的是,慢 11 秒和慢 12 秒都是慢啦 :p

  3. mod_rewrite是比較肥大,之前用寫一個hashmap去對應backend的機器,
    loading是蠻重,有時mapping還會出錯orz..,
    後來用squid 作reverse proxy加上custom的redirector,
    是比mod_rewrite有效率,也幾乎不會出錯了...

  4. 唔,我覺得重點不在於用不用 mod_rewrite
    重點在於在使用者看起來, "XXXX&rss20=1" 這種看了就是比較不討喜
    用什麼實作好像不重要吧?

Leave a Reply

Your email address will not be published. Required fields are marked *