在apache中要實現url參數我們必須了解一些基本的參數了,像r,f,g,p,l等等我們都需要知道它們的作用,這樣才能更好的使用URL重寫規則來做我們想做的事情。
1) R[=code](force redirect) 強制外部重定向 強制在替代字符串加上http://thishost[:thisport]/前綴重定向到外部的URL.如果code不指定,將用缺省的302 HTTP狀態碼。
2) F(force URL to be forbidden)禁用URL,返回403HTTP狀態碼。
3) G(force URL to be gone) 強制URL為GONE,返回410HTTP狀態碼。
4) P(force proxy) 強制使用代理轉發。
5) L(last rule) 表明當前規則是最后一條規則,停止分析以后規則的重寫。
6) N(next round) 重新從第一條規則開始運行重寫過程。
7) C(chained with next rule) 與下一條規則關聯
如果規則匹配則正常處理,該標志無效,如果不匹配,那么下面所有關聯的規則都跳過。
8) T=MIME-type(force MIME type) 強制MIME類型
9) NS (used only if no internal sub-request) 只用于不是內部子請求
10) NC(no case) 不區分大小寫
11) QSA(query string append) 追加請求字符串
12) NE(no URI escaping of output) 不在輸出轉義特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將能正確的將/foo/zoo轉換成/bar?arg=P1=zed
13) PT(pass through to next handler) 傳遞給下一個處理,例如:
- RewriteRule ^/abc(.*) /def$1 [PT] # 將會交給/def規則處理
- Alias /def /ghi
14) S=num(skip next rule(s)) 跳過num條規則
- RewriteEngine on
- RewriteCond %{HTTP_HOST} ^otc-team [NC]
- RewriteRule ^(.*) http://otcteam.Vevb.com/$1 [L]
一些有用的實際rewrite例子
- NameVirtualHost 173.192.169.119:80
- ServerAdmin smile665(AT)gmail.com
- DocumentRoot "/web"
- ServerName Vevb.com
RewriteCond %{HTTP_HOST} !^www.49028c.com [NC] #聲明Client請求的主機中前綴不是www.49028c.com,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^173.192.169.119 [NC] #聲明Client請求的主機中前綴不是70.40.213.183,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^$ #聲明Client請求的主機中前綴不為空
RewriteRule ^(.*) http://www.49028c.com/ [L] #含義是如果Client請求的主機中的前綴符合上述條件,則直接進行跳轉到http://www.49028c.com/,[L]意味著立即停止重寫操作,并不再應用其他重寫規則。這里的.*是指匹配所有URL中的任意字符,()括號的功能是把所有的字符做一個標記,以便于后面用$1這樣的變量來引用,就是引用前面里的(.*)字符。
新聞熱點
疑難解答