Apache偽靜態(tài)Rewrite詳解
一、Rewrite規(guī)則簡(jiǎn)介:
Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語(yǔ)言??苫诜?wù)器級(jí)的(httpd.conf)和目錄級(jí)的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時(shí)候就直接 安裝rewrite模塊,別一種是編譯apache時(shí)以DSO模式安裝apache,然后再利用源碼和apxs來(lái)安裝rewrite模塊。
二、在Apache配置中啟用Rewrite
打開(kāi)配置文件httpd.conf:
1.啟用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
2.啟用.htaccess
在虛擬機(jī)配置項(xiàng)中
AllowOverride None 修改為: AllowOverride All
二、Rewrite基本寫(xiě)法
服務(wù)器有配置文件不可能由我們來(lái)改,所以大多情況下要在網(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ī)則重寫(xiě)的標(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ī)則的重寫(xiě)。
6) N(next round) 重新從第一條規(guī)則開(kāi)始運(yùn)行重寫(xiě)過(guò)程。
7) C(chained with next rule) 與下一條規(guī)則關(guān)聯(lián)
如果規(guī)則匹配則正常處理,該標(biāo)志無(wú)效,如果不匹配,那么下面所有關(guān)聯(lián)的規(guī)則都跳過(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ū)分大小寫(xiě)
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)) 跳過(guò)num條規(guī)則
15) E=VAR:VAL(set environment variable) 設(shè)置環(huán)境變量
四、Apache rewrite例子
例子一:
同時(shí)達(dá)到下面兩個(gè)要求:
1.用http://www.dbjr.com.cn/xxx.php 來(lái)訪問(wèn) http://www.dbjr.com.cn/xxx/
2.用http://yyy.jb51.net 來(lái)訪問(wèn) http://www.dbjr.com.cn/user.php?username=yyy 的功能
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.dbjr.com.cn
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ http://www.dbjr.com.cn/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.dbjr.com.cn
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).jb51.net http://www.dbjr.com.cn/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)文章
在centos7上搭建mysql主從服務(wù)器的方法(圖文教程)
這篇文章主要介紹了在centos7上搭建mysql主從服務(wù)器的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11用DNSPod和Squid打造自己的CDN (五) 安裝Squid的前期準(zhǔn)備
從本章開(kāi)始,大家將會(huì)學(xué)到如何在Linux下面安裝、編譯程序,還會(huì)學(xué)到程序編譯的優(yōu)化方法,最后會(huì)通過(guò)源代碼編譯的方式把Squid安裝上2013-04-04LNMP系列教程之 SSL安裝WordPress博客(程序下載與安裝)
在之前的文章中,老左已經(jīng)在VPS中添加了站點(diǎn),然后我們就需要傳程序建站。我們可以利用WinSCP工具直接向我們的對(duì)應(yīng)的站點(diǎn)目錄中傳程序,然后添加數(shù)據(jù)庫(kù)安裝網(wǎng)站2012-09-09