1.apache rewrite的主要功能
就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等
2.apache rewrite的配置
apache下的rewrite配置主要有兩種,一種是針對整個apache伺服器的配置,此種配置的rewrite規則是直接在httpd.conf下書寫。配置步驟如下:
(1)去除httpd.conf檔案中"#loadmodule rewrite_module modules/mod_rewrite.so"前面的"#"號;
(2)然後再在httpd.conf中書寫如下規則:
rewriteengine on
#當訪問任何以t_開頭,以.html結尾的檔案時,將1用與
(.∗)
匹配的字
符替換後
,訪問相
應的te
st.p
hp頁面
rewr
iter
ule/
t(.∗
).ht
ml
1用與(.*)匹配的字元替換後,訪問相應的test.php頁面 rewriterule ^/t_(.*).html
1用與(.∗
)匹配的
字元替換
後,訪問
相應的t
est.
php頁
面rew
rite
rule
/t(
.∗).
html
/test.php?id=$1
另一種是針對apache伺服器下的某一目錄的配置,此種配置的rewrite規則需在此目錄下建立乙個.htaccess檔案來書寫。配置步驟如下:
(1)去除httpd.conf檔案中"#loadmodule rewrite_module modules/mod_rewrite.so"前面的"#「號;
(2)修改httpd.conf檔案中的"allowoverride none"為"allowoverride all」,同時最好將options也置為"all",否則可能會出問題。
(3)在目錄中建立.htaccess檔案,並用記事本開啟,書寫如下規則:
rewriteengine on
rewriterule ^/t_(.*).html$ /test.php?id=$1
3.apache rewrite規則的書寫
rewriteengine on
rewriterule ^/test([0-9]*).html$ /test.php?id=1re
writ
erul
e/ne
w([0
−9]∗
)/
1 rewriterule ^/new([0-9]*)/
1rewri
teru
le/n
ew([
0−9]
∗)/ /new.php?id=$1 [r]
rewriteengine on
#當我們訪問的位址不是以www.163.com開頭的,那麼執行下一條規則
rewritecond % !^www.163.com [nc]
rewriterule ^/(.*) [l]
4.apache rewrite規則修正符
r 強制外部重定向
f 禁用url,返回403http狀態碼。
g 強制url為gone,返回410http狀態碼。
p 強制使用****。
l 表明當前規則是最後一條規則,停止分析以後規則的重寫。
n 重新從第一條規則開始執行重寫過程。
c 與下一條規則關聯
如果規則匹配則正常處理,以下修正符無效
t=mime-type(force mime type) 強制mime型別
ns 只用於不是內部子請求
nc 不區分大小寫
qsa 追加請求字串
ne 不在輸出轉義特殊字元 %3d$1 等價於 =$1
apache url路由配置重寫
1.apache rewrite的主要功能 就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,防止盜鏈等 2.apache rewrite的配置 apache下的rewrite配置主要有兩種,一種是針對整個apache伺服器的配置,此...
apache url路由配置重寫
最近複習了一下apache rewrite url重定向功能,有個專案用到了.htaccess,簡單的幾行 是看不怎麼明白,於是複習了一下。1.apache rewrite的主要功能 就是實現url的跳轉和隱藏真實位址,基於perl語言的正規表示式規範。平時幫助我們實現擬靜態,擬目錄,網域名稱跳轉,...
Apache url重寫問題記錄
由於 需要做乙個英文站點,訪問路徑想用www.mysite.com en 這樣開頭的就是英文站點,由於英文站點和中文站只是模板的說明文字變成英文,所以需要重定向一下這個位址,實現 這樣的跳轉,同時瀏覽器的url不變 之前一直是用的別人的rewrite規則修改下就ok的。但是之前的rewrite規則沒...