Apache中偽靜態(tài)Rewrite的使用方法和URL重寫規(guī)則表達(dá)式講解
apache中的mod_rewrite模塊提供了一個(gè)基于正則表達(dá)式分析器的重寫引擎來實(shí)時(shí)重寫URL請(qǐng)求,主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言??苫诜?wù)器級(jí)的(httpd.conf)和目錄級(jí)的(.htaccess)兩種方式,允許通過它來改變Apache Web服務(wù)器的配置。它支持每個(gè)完整規(guī)則可以擁有不限數(shù)量的子規(guī)則以及附加條件規(guī)則的靈活而且強(qiáng)大的URL操作機(jī)制。此URL操作可以依賴于各種測(cè)試,比如服務(wù)器變量、環(huán)境變量、HTTP頭、時(shí)間標(biāo)記,甚至各種格式的用于匹配URL組成部分的查找數(shù)據(jù)庫。
而配置偽靜態(tài)的方法,需要根據(jù)web服務(wù)器的不同來做不同的配置,一般常用的有Apache服務(wù)器和Nginx服務(wù)器,本篇只介紹在Apache服務(wù)器上開啟和通過.htaccess文件來配置偽靜態(tài)的方法。
一、安裝rewrite模塊
如果要想用到rewrite模塊,必須確保在已安裝或加載rewrite模塊。一般在編譯apache的時(shí)候就安裝了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)的項(xiàng)目根目錄下建立 .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 為 啟動(dòng)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á)。+空格 后路徑為后臺(tái)實(shí)際轉(zhuǎn)向路徑。
3、轉(zhuǎn)向后臺(tái)實(shí)際路徑時(shí)可以傳參數(shù),$1 代表瀏覽器路徑中輸入的第一個(gè)正則表達(dá)式的值,以此類推,$2代表第二個(gè)正則表達(dá)式的值。
4、RewriteRule 路由轉(zhuǎn)向規(guī)則里正則表達(dá)式用括號(hào) () 括起來。
5、在RewriteRule寫法中,^表示語句開始,$ 表示語句的結(jié)束,L 表明當(dāng)前規(guī)則是最后一條規(guī)則,停止分析以后重寫,NC表示不區(qū)分大小寫,QSA表示追加請(qǐng)求的字符串。
RewriteRule規(guī)則表達(dá)式的說明: . 匹配任何單字符 [chars] 匹配字符串:chars [^chars] 不匹配字符串:chars text1|text2 可選擇的字符串:text1或text2 ? 匹配0到1個(gè)字符 * 匹配0到多個(gè)字符 + 匹配1到多個(gè)字符 ^ 字符串開始標(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)部子請(qǐng)求 10) NC(no case) 不區(qū)分大小寫 11) QSA(query string append) 追加請(qǐng)求字符串 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
apache time_wait連接數(shù)太多問題解決方法
這篇文章主要介紹了apache time_wait連接數(shù)太多問題解決方法,本文使用調(diào)整內(nèi)核參數(shù)來解決,需要的朋友可以參考下2014-11-11
Ubuntu18.04更改apt源為阿里云源的詳細(xì)過程
安裝Ubuntu 18.04后,使用國外源太慢了,修改為國內(nèi)源會(huì)快很多,下面這篇文章主要給大家介紹了關(guān)于Ubuntu18.04更改apt源為阿里云源的相關(guān)資料,需要的朋友可以參考下2021-12-12
解決生產(chǎn)環(huán)境遇到的curl和yum命令報(bào)錯(cuò)問題
在銀河麒麟V10SP2arm64系統(tǒng)下,升級(jí)sshd服務(wù)同時(shí)升級(jí)了openssl至1.1.1l版本,導(dǎo)致curl和yum命令報(bào)錯(cuò),分析原因是openssl版本與libcurl.so.4文件不兼容,嘗試修復(fù)無效后,通過重新編譯安裝curl解決問題,建議在升級(jí)openssl時(shí)謹(jǐn)慎2024-09-09
Linux使用sar命令跟蹤和記錄系統(tǒng)資源利用率
sar?命令是?Linux?系統(tǒng)中的一個(gè)系統(tǒng)監(jiān)控工具,由?sysstat?包提供,它可以定期收集系統(tǒng)的各種性能數(shù)據(jù),包括CPU利用率、內(nèi)存使用情況、磁盤I/O活動(dòng)、網(wǎng)絡(luò)流量等,本文介紹了如何在?Linux?中使用?sar?命令跟蹤和記錄系統(tǒng)資源利用率,需要的朋友可以參考下2024-07-07
Linux中對(duì)lvm邏輯卷分區(qū)大小的調(diào)整教程(針對(duì)xfs與ext4不同文件系統(tǒng))
這篇文章主要給大家介紹了關(guān)于Linux中對(duì)lvm邏輯卷分區(qū)大小的調(diào)整教程(針對(duì)xfs與ext4不同文件系統(tǒng))的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
linux負(fù)載均衡總結(jié)性說明 四層負(fù)載和七層負(fù)載有什么區(qū)別
這篇文章主要為大家詳細(xì)介紹了linux負(fù)載均衡的相關(guān)資料,什么是負(fù)載均衡?四層負(fù)載和七層負(fù)載有什么區(qū)別?具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

