前幾天找了一下apache轉址的方法,一開始找到RedirectMatch
使用方式很簡單,改httpd.conf,把要改的那個VirtualHost tag裡加上RedirectMatch 規則 目的就好了
像是固定要把/12345/abcde轉到/my.php?i=12345&n=abcde
設定裡就要下RedirectMatch ^/(\d{5})/([a-z]{5,10}) /my.php?i=$1&n=$2
規則可以用標準表示式設定,小括是重點,影嚮到後面$1,$2的使用,前面有括後面才能用$n的方式叫回來
改好後重新啟動apache服務就行了,很順利的一次搞定。
可是後來發現用這種方式導過去後,頁面上方的網址會是my.php?i=xxooxxoo這樣,不美麗
後來又找到RewriteRule,使用上跟RedirectMatch很相似,但是用法更靈活,只要把上面的RedirectMatch改成RewriteRule,然後在這一行的上面加一條Rewriteengine on,一樣重啟apache後基本上就可以了
用這種方式導到正確頁面後,網址不會被改掉,相當完美相當滿意
但是!!Rewrite要注意的是,因為網址不會被改掉,所以有時候會發生頁面上有些圖片、css、javascript、超連結等呼喚其他檔案的地方都中邪貌失效了,原因就是本來程式裡用相對路徑的寫法這時候會找不到啊!所以如果一開始沒用絕對路徑,這時候改起來就會很痛苦
雖然很開心的找到我要的rewriterule,不過我終究因為上面說的「改起來很痛苦」而改回redirectmatch……對於rewriterule的語法就沒有再深入去研究了,有興趣的人可以看看rewriterule的介紹
2011年4月13日 星期三
apache轉址:RedirectMatch跟RewriteRule
2010年7月14日 星期三
2010年6月24日 星期四
移除apache預設語系
最近遇到放在同一server上的多個網中,要把其中一個網站改成utf-8編碼,其他繼續用big5編碼時,utf-8的網頁全部改好編碼,也改好head資訊了,結果開啟網頁的時候,瀏覽器一樣是選big5編碼,就算用自動選取也是不跳utf-8。
後來發現原來是那台server的apache版本較舊,有設定預設語系,現在新版apache大多預設不設定預設語系了。
把預設語系移掉方法:
1.修改httpd.con設定檔,路徑一般是在/etc/httpd/conf裡
2.找到"AddDefaultCharset",在這行前面加# mark起來
3.重新啟動httpd服務:執行/etc/rc.d/init.d/httpd restart,成功重啟後再確認一下各網站運作正常就ok了
訂閱:
文章 (Atom)
