Apache中偽靜態(tài)Rewrite的使用方法和URL重寫規(guī)則表達(dá)式講解
目錄
- 一、安裝rewrite模塊
- 二、配置文件httpd.conf中啟用Rewrite
- 三、在服務(wù)器中找到配置文件vhosts.conf,啟用.htaccess
- 四、在要啟用偽靜態(tài)的項目根目錄下建立 .htaccess 文件
- 五、重啟Apache服務(wù)器,就OK了
- 六、參數(shù)補(bǔ)充說明
apache中的mod_rewrite模塊提供了一個基于正則表達(dá)式分析器的重寫引擎來實時重寫URL請求,主要的功能就是實現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言。可基于服務(wù)器級的(httpd.conf)和目錄級的(.htaccess)兩種方式,允許通過它來改變Apache Web服務(wù)器的配置。它支持每個完整規(guī)則可以擁有不限數(shù)量的子規(guī)則以及附加條件規(guī)則的靈活而且強(qiáng)大的URL操作機(jī)制。此URL操作可以依賴于各種測試,比如服務(wù)器變量、環(huán)境變量、HTTP頭、時間標(biāo)記,甚至各種格式的用于匹配URL組成部分的查找數(shù)據(jù)庫。
而配置偽靜態(tài)的方法,需要根據(jù)web服務(wù)器的不同來做不同的配置,一般常用的有Apache服務(wù)器和Nginx服務(wù)器,本篇只介紹在Apache服務(wù)器上開啟和通過.htaccess文件來配置偽靜態(tài)的方法。
一、安裝rewrite模塊
如果要想用到rewrite模塊,必須確保在已安裝或加載rewrite模塊。一般在編譯apache的時候就安裝了rewrite模塊。
二、配置文件httpd.conf中啟用Rewrite
打開Apache配置文件httpd.conf,找到代碼:
#LoadModule rewrite_module modules/mod_rewrite.so
把前面#去掉。沒有則添加,但必須獨(dú)占一行,使apache支持 mod_rewrite 模塊。
三、在服務(wù)器中找到配置文件vhosts.conf,啟用.htaccess
打開虛擬機(jī)配置文件vhosts.conf,找到代碼:
AllowOverride None
修改為: AllowOverride All
使Apache支持 .htaccess 文件
四、在要啟用偽靜態(tài)的項目根目錄下建立 .htaccess 文件
在.htaccess 文件中輸入內(nèi)容,示例如下
< IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f #RewriteRule RewriteRule index.html$ index.php #RewriteRule ^(.*?).html$ index.php?$1.html [QSA,PT,L] #RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 #更多偽靜態(tài)規(guī)則 < /IfModule>
// RewriteEngine on 為 啟動rewrite引擎
// RewriteRule 部分為自己的偽靜態(tài)規(guī)則
五、重啟Apache服務(wù)器,就OK了
六、參數(shù)補(bǔ)充說明
1、RewriteEngine 為重寫引擎開關(guān),on為開啟,off為關(guān)閉。
2、RewriteRule 是路由轉(zhuǎn)向規(guī)則,之前路徑為瀏覽器中要輸入路徑,這里可以用正則表達(dá)式表達(dá)。+空格 后路徑為后臺實際轉(zhuǎn)向路徑。
3、轉(zhuǎn)向后臺實際路徑時可以傳參數(shù),$1 代表瀏覽器路徑中輸入的第一個正則表達(dá)式的值,以此類推,$2代表第二個正則表達(dá)式的值。
4、RewriteRule 路由轉(zhuǎn)向規(guī)則里正則表達(dá)式用括號 () 括起來。
5、在RewriteRule寫法中,^表示語句開始,$ 表示語句的結(jié)束,L 表明當(dāng)前規(guī)則是最后一條規(guī)則,停止分析以后重寫,NC表示不區(qū)分大小寫,QSA表示追加請求的字符串。
RewriteRule規(guī)則表達(dá)式的說明: . 匹配任何單字符 [chars] 匹配字符串:chars [^chars] 不匹配字符串:chars text1|text2 可選擇的字符串:text1或text2 ? 匹配0到1個字符 * 匹配0到多個字符 + 匹配1到多個字符 ^ 字符串開始標(biāo)志 $ 字符串結(jié)束標(biāo)志 \n 轉(zhuǎn)義符標(biāo)志
6、補(bǔ)充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)部子請求 10) NC(no case) 不區(qū)分大小寫 11) QSA(query string append) 追加請求字符串 12) NE(no URI escaping of output) 不在輸出轉(zhuǎn)義特殊字符
到此這篇關(guān)于Apache中偽靜態(tài)Rewrite的使用方法和URL重寫規(guī)則表達(dá)式講解的文章就介紹到這了,更多相關(guān)∪rL重寫偽靜態(tài)Rewrite內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
1. Apache Pulsar集群搭建部署詳細(xì)過程2. Apache Doris Join 優(yōu)化原理詳解3. WAMP(win+apache+mysql+php)環(huán)境部署及優(yōu)化(以win2008R2SP1為操作系統(tǒng))4. 基于Apache Hudi在Google云構(gòu)建數(shù)據(jù)湖平臺的思路詳解5. 寶塔apache配置阿里云SSL免費(fèi)證書的步驟(圖文)6. Apache Linkis 中間件架構(gòu)及快速安裝步驟7. 教你使用Apache搭建Http下載服務(wù)器8. IDEA編輯器整合Apache Tomcat的詳細(xì)教程9. 詳解apache編譯安裝httpd-2.4.54及三種風(fēng)格的init程序特點和區(qū)別10. 源碼安裝apache腳本部署過程詳解
