來講什麼是 mod_rewrite (或是其他類似的東西),以 Group.NCTU.edu.tw 為例,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 愈來愈吃重,需要以獨立的機器分出來就更方便了。
關於無名,我想到的是效能問題,小網站這樣作沒問題,大網站要依賴 mod_rewrite 也許會有點吃力。
而且自己寫程式也是可以達到 mod_rewrite 的功能的.. 並不一定要用到 mod_rewrite
另外的問題是無名有 reverse proxy,這也會影響一些設計上的考量..
無名有大到做 mod_rewrite 會吃力的情況嗎? hmm...
不然師程工是養來幹嘛的?為什麼國外的網站流量比大的都有,無名卻沒有咧?
其實我想講的是,慢 11 秒和慢 12 秒都是慢啦 :p
mod_rewrite是比較肥大,之前用寫一個hashmap去對應backend的機器,
loading是蠻重,有時mapping還會出錯orz..,
後來用squid 作reverse proxy加上custom的redirector,
是比mod_rewrite有效率,也幾乎不會出錯了...
我沒有說用 apache 吧...
唔,我覺得重點不在於用不用 mod_rewrite
重點在於在使用者看起來, "XXXX&rss20=1" 這種看了就是比較不討喜
用什麼實作好像不重要吧?