發布者認證信息(營業執照和身份證)未完善,請登錄后完善信息登錄
Apache伪静态Rewrite详解-亿华网

久久天天躁狠狠躁夜夜,国精品无码一区二区三区左线,色综合网天天综合色中文,国产suv精品一区二区883,午夜精品一区二区三区的区别

首頁 » 資訊 » 編程開發 > Apache偽靜態Rewrite詳解

Apache偽靜態Rewrite詳解

  發布時間 : 2017-04-27 14:41:10 62
內容提要
一、Rewrite規則簡介:Rewirte主要的功能就是實現URL的跳轉,它的正則表達式是基于Perl語言。可基于服務器級的(httpd.conf)和目
 一、Rewrite規則簡介:

Rewirte主要的功能就是實現URL的跳轉,它的正則表達式是基于Perl語言。可基于服務器級的(httpd.conf)和目錄級的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時候就直接 安裝rewrite模塊,別一種是編譯apache時以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。
二、在Apache配置中啟用Rewrite
打(da)開(kai)配置(zhi)文(wen)件httpd.conf:

復制代碼代碼如下:

1.啟用rewrite
# LoadModule rewrite_module modules/mod_rewrite.so 去除前面的 #

 

2.啟用.htaccess
在虛擬機配置項中
 AllowOverride None    修改(gai)為(wei): AllowOverride All


二、Rewrite基本寫法
服務(wu)器有(you)配置文件不可能由我們(men)來改(gai),所以大多情況下要在網站的(de)根目錄下建一個.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規則重寫的標志一覽
1) R[=code](force REDirect) 強制外部重定向
強(qiang)制在替代(dai)字符串加上//thishost[:thisport]/前綴重(zhong)定(ding)向(xiang)到外部的URL.如果(guo)code不指定(ding),將用(yong)缺(que)省的302 HTTP狀(zhuang)態碼。
2) F(force URL to be forbidden)禁(jin)用URL,返回403HTTP狀態碼(ma)。
3) G(force URL to be gone) 強制(zhi)URL為GONE,返回410HTTP狀態(tai)碼。
4) P(force proxy) 強制使(shi)用代(dai)理轉發。
5) L(last rule) 表明(ming)當前規(gui)則(ze)(ze)是(shi)最后(hou)一條規(gui)則(ze)(ze),停止分析(xi)以后(hou)規(gui)則(ze)(ze)的重寫(xie)。
6) N(next round) 重新從第(di)一條規則開(kai)始運(yun)行重寫過程。
7) C(chained with next rule) 與下一條(tiao)規則(ze)關聯
如(ru)(ru)果規(gui)則匹配(pei)(pei)則正常(chang)處理,該標志無(wu)效,如(ru)(ru)果不匹配(pei)(pei),那么下面所有關(guan)聯的規(gui)則都跳(tiao)過。
8) T=MIME-type(force MIME type) 強制MIME類(lei)型
9) NS (used only if no internal sub-request) 只用于不是內部子請求
10) NC(no case) 不區(qu)分大小寫
11) QSA(query string append) 追加請求字符串
12) NE(no URI escaping of output) 不(bu)在輸(shu)出轉義特殊(shu)字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將(jiang)(jiang)能正確的將(jiang)(jiang)/foo/zoo轉換成/bar?arg=P1=zoo
13) PT(pass through to next handler) 傳(chuan)遞給下一個處理
例如:
復制代碼代碼如下:
RewriteRule ^/abc(.*) /def$1 [PT] # 將會交給/def規則處理
Alias /def /ghi

14) S=num(skip next rule(s)) 跳過num條規則
15) E=VAR:VAL(set environment variable) 設置環境變量

 

四、Apache rewrite例子
例子一:
同時達到下面兩個要求:
1.用//www.yiehua.com
2.用//yyy.yiehua.com 來訪問(wen) //www.yiehua.com/user.php?username=yyy 的功能

復制代碼代碼如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yiehua.com
RewriteCond %{REQUEST_URI} !^user.php$
RewriteCond %{REQUEST_URI} .php$
RewriteRule (.*).php$ //www.yiehua.com/$1/ [R]
RewriteCond %{HTTP_HOST} !^www.yiehua.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^.]+).yiehua.com //www.yiehua.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]

 
layui

微信掃(sao)碼(ma)關注(zhu) 億(yi)華聯眾 公(gong)眾號

頭條推薦