濮阳杆衣贸易有限公司

主頁 > 知識庫 > Apache中rewrite偽靜態(tài)規(guī)則介紹

Apache中rewrite偽靜態(tài)規(guī)則介紹

熱門標(biāo)簽:地圖標(biāo)注小區(qū)項(xiàng)目入駐 凱立德劇院地圖標(biāo)注 內(nèi)蒙古電信外呼系統(tǒng) 漳州外呼系統(tǒng)怎么樣 開封400電話辦理價格 天津人工電銷機(jī)器人費(fèi)用 4s店如何在百度地圖標(biāo)注 哪個地圖標(biāo)注更清晰 曲阜地圖標(biāo)注app

Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn),它的正則表達(dá)式是基于Perl語言??苫诜?wù)器級的(httpd.conf)和目錄級的(.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時候就直接安裝rewrite模塊,別一種是編譯apache時以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊

基于服務(wù)器級的(httpd.conf)有兩種方法,一種是在httpd.conf的全局下直接利用RewriteEngine on來打開rewrite功能;另一種是在局部里利用RewriteEngine on來打開rewrite功能,下面將會舉例說明,需要注意的是,必須在每個virtualhost里用RewriteEngine on來打開rewrite功能。否則virtualhost里沒有RewriteEngine on它里面的規(guī)則也不會生效。

基于目錄級的(.htaccess),要注意一點(diǎn)那就是必須打開此目錄的FollowSymLinks屬性且在.htaccess里要聲明RewriteEngine on。

實(shí)戰(zhàn)

例子:


復(fù)制代碼
代碼如下:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* - [F,L] 這里”-”表示沒有替換,瀏覽器為IE和Opera的訪客將被禁止訪問。

例子:


復(fù)制代碼
代碼如下:

RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+).html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

使用Apache的URL Rewrite配置多用戶虛擬服務(wù)器

要實(shí)現(xiàn)這個功能,首先要在DNS服務(wù)器上打開域名的泛域名解析(自己做或者找域名服務(wù)商做)。比如,我就把 *.kiya.us和 *.kiya.cn全部解析到了我的IP地址70.40.213.183上。

然后,看一下我的Apache中關(guān)于*.kiya.us的虛擬主機(jī)的設(shè)定。


復(fù)制代碼
代碼如下:

ServerAdmin webmaster@kiya.us
DocumentRoot /home/www/111cn.net
ServerName dns.kiya.us
ServerAlias dns.kiya.us kiya.us *.kiya.us
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
AllowOverride None
Order deny,allow
#AddDefaultCharset GB2312
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/111cn.net/sylvan$3?un=$1%{QUERY_STRING} [L]


在這段設(shè)定中,我把*.kiya.cn和*.kiya.us 的Document Root都設(shè)定到了 /home/www/111cn.net

限制目錄只能顯示圖片


復(fù)制代碼
代碼如下:

IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ - [F,L]
/IfModule>


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)志

反向引用 $N 用于 RewriteRule 中匹配的變量調(diào)用(0 = N = 9)
反向引用 %N 用于 RewriteCond 中最后一個匹配的變量調(diào)用(1 = N = 9)

RewriteCond適用的標(biāo)志符
‘nocase|NC’ (no case)忽略大小
‘ornext|OR’ (or next condition)邏輯或,可以同時匹配多個RewriteCond條件

RewriteRule適用的標(biāo)志符

‘redirect|R [=code]’ (force redirect)強(qiáng)迫重寫為基于http開頭的外部轉(zhuǎn)向(注意URL的變化) 如:[R=301,L]
‘forbidden|F’ (force URL to be forbidden)重寫為禁止訪問
‘proxy|P’ (force proxy)重寫為通過代理訪問的http路徑
‘last|L’ (last rule)最后的重寫規(guī)則標(biāo)志,如果匹配,不再執(zhí)行以后的規(guī)則
‘next|N’ (next round)循環(huán)同一個規(guī)則,直到不能滿足匹配
‘chain|C’ (chained with next rule)如果匹配該規(guī)則,則繼續(xù)下面的有Chain標(biāo)志的規(guī)則。
‘type|T=MIME-type’ (force MIME type)指定MIME類型
‘nosubreq|NS’ (used only if no internal sub-request)如果是內(nèi)部子請求則跳過
‘nocase|NC’ (no case)忽略大小
‘qsappend|QSA’ (query string append)附加查詢字符串
‘noescape|NE’ (no URI escaping of output)禁止URL中的字符自動轉(zhuǎn)義成%[0-9]+的形式。
‘passthrough|PT’ (pass through to next handler)將重寫結(jié)果運(yùn)用于mod_alias
’skip|S=num’ (skip next rule(s))跳過下面幾個規(guī)則
‘env|E=VAR:VAL’ (set environment variable)添加環(huán)境變量

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)義特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE] 將能正確的將/foo/zoo轉(zhuǎn)換成/bar?arg=P1=zoo
13) PT(pass through to next handler) 傳遞給下一個處理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 將會交給/def規(guī)則處理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳過num條規(guī)則
15) E=VAR:VAL(set environment variable) 設(shè)置環(huán)境變量

標(biāo)簽:武漢 南京 南陽 黔南 莆田 陽泉 綿陽 開封

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Apache中rewrite偽靜態(tài)規(guī)則介紹》,本文關(guān)鍵詞  Apache,中,rewrite,偽,靜態(tài),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Apache中rewrite偽靜態(tài)規(guī)則介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于Apache中rewrite偽靜態(tài)規(guī)則介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    库伦旗| 民乐县| 运城市| 定兴县| 丰县| 白水县| 宝清县| 陆川县| 长沙市| 运城市| 南开区| 房产| 和林格尔县| 西贡区| 堆龙德庆县| 石台县| 安阳市| 陇川县| 宁夏| 谢通门县| 武宣县| 合江县| 肥乡县| 什邡市| 西乌珠穆沁旗| 蒙山县| 玛沁县| 交城县| 加查县| 鸡东县| 吴堡县| 阜宁县| 武胜县| 水城县| 兰西县| 平潭县| 海安县| 禄丰县| 金川县| 浦江县| 灯塔市|