LENDIEN聯電 冷暖 清淨 除溼 移動式空調 9000BTU任天堂-Switch-NS-公司貨主機-豪華全配組LG樂金 WIFI遠控雙眼小精靈掃地清潔機器人變頻版
顯示具有 apache 標籤的文章。 顯示所有文章
顯示具有 apache 標籤的文章。 顯示所有文章

2011年4月13日 星期三

apache轉址:RedirectMatch跟RewriteRule

前幾天找了一下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的介紹

2010年7月14日 星期三

幾個常用的系統變數

HTTP_USER_AGENT:user的瀏覽器資訊,包含種類、版本及裝了哪些toolbar
QUERY_STRING:網址列帶的變數資料,通常用來pass到下一頁或要再回這頁時用
REQUEST_URI:當前頁的路徑
HTTP_REFERER:上一頁的路徑。有些瀏覽器不會記這個資訊,所以越來越少用了XD
REMOTE_ADDR:user的IP

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了