Apache偽靜態(tài)Rewrite詳解
一、Rewrite規(guī)則簡(jiǎn)介:
Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言。可基于服務(wù)器級(jí)的(httpd.conf)和目錄級(jí)的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時(shí)候就直接 安裝rewrite模塊,別一種是編譯apache時(shí)以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。
二、在Apache配置中啟用Rewrite
打開配置文件httpd.conf:
1.啟用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
2.啟用.htaccess
在虛擬機(jī)配置項(xiàng)中
AllowOverride None 修改為: AllowOverride All
二、Rewrite基本寫法
服務(wù)器有配置文件不可能由我們來改,所以大多情況下要在網(wǎng)站的根目錄下建一個(gè).htaccess文件。
RewriteEngine on //啟動(dòng)rewrite引擎
RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //“([0-9]*)” 代表范圍 用(.*)代表所有,下同。
RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //虛擬目錄
三、Apache mod_rewrite規(guī)則重寫的標(biāo)志一覽
1) R[=code](force redirect) 強(qiáng)制外部重定向
強(qiáng)制在替代字符串加上http://thishost[:thisport]/前綴重定向到外部的URL.如果code不指定,將用缺省的302 HTTP狀態(tài)碼。
2) F(force URL to be forbidden)禁用URL,返回403HTTP狀態(tài)碼。
3) G(force URL to be gone) 強(qiáng)制URL為GONE,返回410HTTP狀態(tài)碼。
4) P(force proxy) 強(qiáng)制使用代理轉(zhuǎn)發(fā)。
5) L(last rule) 表明當(dāng)前規(guī)則是最后一條規(guī)則,停止分析以后規(guī)則的重寫。
6) N(next round) 重新從第一條規(guī)則開始運(yùn)行重寫過程。
7) C(chained with next rule) 與下一條規(guī)則關(guān)聯(lián)
如果規(guī)則匹配則正常處理,該標(biāo)志無效,如果不匹配,那么下面所有關(guān)聯(lián)的規(guī)則都跳過。
8) T=MIME-type(force MIME type) 強(qiáng)制MIME類型
9) NS (used only if no internal sub-request) 只用于不是內(nèi)部子請(qǐng)求
10) NC(no case) 不區(qū)分大小寫
11) QSA(query string append) 追加請(qǐng)求字符串
12) NE(no URI escaping of output) 不在輸出轉(zhuǎn)義特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將能正確的將/foo/zoo轉(zhuǎn)換成/bar?arg=P1=zoo
13) PT(pass through to next handler) 傳遞給下一個(gè)處理
例如:
Alias /def /ghi
14) S=num(skip next rule(s)) 跳過num條規(guī)則
15) E=VAR:VAL(set environment variable) 設(shè)置環(huán)境變量
四、Apache rewrite例子
例子一:
同時(shí)達(dá)到下面兩個(gè)要求:
1.用http://www.dhdzp.com/xxx.php 來訪問 http://www.dhdzp.com/xxx/
2.用http://yyy.jb51.net 來訪問 http://www.dhdzp.com/user.php?username=yyy 的功能
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.dhdzp.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.dhdzp.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.dhdzp.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).jb51.net http://www.dhdzp.com/user.php?username=$1
例子二:
/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]
相關(guān)文章
Linux下php連接SQLServer 2000數(shù)據(jù)庫(kù)的配置方法
Linux服務(wù)器中的php程序能夠連接到Windows服務(wù)器中的SQL Server 2000數(shù)據(jù)庫(kù),這里分享下配置方法,需要的朋友可以參考下2013-06-06
使用 libevent 和 libev 提高網(wǎng)絡(luò)應(yīng)用性能的方法
構(gòu)建現(xiàn)代的服務(wù)器應(yīng)用程序需要以某種方法同時(shí)接收數(shù)百、數(shù)千甚至數(shù)萬個(gè)事件,無論它們是內(nèi)部請(qǐng)求還是網(wǎng)絡(luò)連接,都要有效地處理它們的操作2011-05-05
linux環(huán)境安裝openssh-server及使用密碼登錄方式
這篇文章主要介紹了linux環(huán)境安裝openssh-server及使用密碼登錄方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
詳解Linux下出現(xiàn)permission denied的解決辦法
這篇文章主要介紹了詳解Linux下出現(xiàn)permission denied的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
Linux實(shí)現(xiàn)自動(dòng)掛載autofs的方法詳解
這篇文章主要介紹了Linux實(shí)現(xiàn)自動(dòng)掛載autofs的相關(guān)資料。autofs 服務(wù)將實(shí)現(xiàn)自動(dòng)掛載外圍設(shè)備,NFS共享目錄等,并在空閑5分鐘后后自動(dòng)卸載,需要的可以參考一下2022-10-10
對(duì)send(),recv()函數(shù)的全面理解
下面小編就為大家?guī)硪黄獙?duì)send(),recv()函數(shù)的全面理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Linux環(huán)境搭建之安裝/配置Tomcat的方法
本篇文章主要介紹了Linux環(huán)境搭建之安裝/配置Tomcat的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

