Apache偽靜態(tài)Rewrite詳解
一、Rewrite規(guī)則簡介:
Rewirte主要的功能就是實現(xiàn)URL的跳轉,它的正則表達式是基于Perl語言。可基于服務器級的(httpd.conf)和目錄級的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時候就直接 安裝rewrite模塊,別一種是編譯apache時以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。
二、在Apache配置中啟用Rewrite
打開配置文件httpd.conf:
1.啟用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #
2.啟用.htaccess
在虛擬機配置項中
AllowOverride None 修改為: AllowOverride All
二、Rewrite基本寫法
服務器有配置文件不可能由我們來改,所以大多情況下要在網站的根目錄下建一個.htaccess文件。
RewriteEngine on //啟動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ī)則重寫的標志一覽
1) R[=code](force redirect) 強制外部重定向
強制在替代字符串加上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) 強制URL為GONE,返回410HTTP狀態(tài)碼。
4) P(force proxy) 強制使用代理轉發(fā)。
5) L(last rule) 表明當前規(guī)則是最后一條規(guī)則,停止分析以后規(guī)則的重寫。
6) N(next round) 重新從第一條規(guī)則開始運行重寫過程。
7) C(chained with next rule) 與下一條規(guī)則關聯(lián)
如果規(guī)則匹配則正常處理,該標志無效,如果不匹配,那么下面所有關聯(lián)的規(guī)則都跳過。
8) T=MIME-type(force MIME type) 強制MIME類型
9) NS (used only if no internal sub-request) 只用于不是內部子請求
10) NC(no case) 不區(qū)分大小寫
11) QSA(query string append) 追加請求字符串
12) NE(no URI escaping of output) 不在輸出轉義特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將能正確的將/foo/zoo轉換成/bar?arg=P1=zoo
13) PT(pass through to next handler) 傳遞給下一個處理
例如:
Alias /def /ghi
14) S=num(skip next rule(s)) 跳過num條規(guī)則
15) E=VAR:VAL(set environment variable) 設置環(huán)境變量
四、Apache rewrite例子
例子一:
同時達到下面兩個要求:
1.用http://www.dbjr.com.cn/xxx.php 來訪問 http://www.dbjr.com.cn/xxx/
2.用http://yyy.jb51.net 來訪問 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]
相關文章
在centos7上搭建mysql主從服務器的方法(圖文教程)
這篇文章主要介紹了在centos7上搭建mysql主從服務器的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11用DNSPod和Squid打造自己的CDN (五) 安裝Squid的前期準備
從本章開始,大家將會學到如何在Linux下面安裝、編譯程序,還會學到程序編譯的優(yōu)化方法,最后會通過源代碼編譯的方式把Squid安裝上2013-04-04LNMP系列教程之 SSL安裝WordPress博客(程序下載與安裝)
在之前的文章中,老左已經在VPS中添加了站點,然后我們就需要傳程序建站。我們可以利用WinSCP工具直接向我們的對應的站點目錄中傳程序,然后添加數(shù)據庫安裝網站2012-09-09