亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Apache > 正文

Apache Rewrite實現URL的跳轉和域名跳轉

2024-08-27 18:31:02
字體:
來源:轉載
供稿:網友
Rewirte主要的功能就是實現URL的跳轉,它的正則表達式是基于Perl語言??苫?于服務器級的(httpd.conf)和目錄級的 (.htaccess)兩種方式。如果要想用到rewrite模塊,必須先安裝或加載rewrite模塊。方法有兩種一種是編譯apache的時候就直接 安裝rewrite模塊,別一種是編譯apache時以DSO模式安裝apache,然后再利用源碼和apxs來安裝rewrite模塊。


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

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

2、舉例說明:

例一.下面是在一個虛擬主機里定義的規則。功能是把client請求的主機前綴不是www.9streets.cn和202.91.246.20都跳 轉到主機前綴為http://www.9streets.cn, 避免相同內容的網頁有多個指向的域名,如http://9strees.cn。

     NameVirtualHost 202.91.246.20:80
     ServerAdmin slj@kiya.cn
     DocumentRoot “/web”
     ServerName 9streets.cn

     RewriteEngine on #打開rewirte功能
     RewriteCond %{HTTP_HOST} !^www.9streets.cn [NC] #聲明Client請求的主機中前綴不是www.9streets.cn, 其中 [NC] 的意思是忽略大小寫
     RewriteCond %{HTTP_HOST} !^202.91.246.20 [NC] #聲明Client請求的主機中前綴不是202.91.246.20,其中 [NC] 的意思是忽略大小寫
     RewriteCond %{HTTP_HOST} !^$ #聲明Client請求的主機中前綴不為空
     RewriteRule ^(.*) http://www.kiya.cn/ [L] #含義是如果Client請求的主機中的前綴符合上述條件,則直接進行跳轉到http://www.kiya.cn/,[L]意味著立即停止重寫操作,并 不再應用其他重寫規則。這里的.*是指匹配所有URL中不包含換行字符,()括號的功能是把所有的字符做一個標記,以便于后面的應用.就是引用前面里的 (.*)字符。

例二.將輸入 efou.net 的域名時跳轉到http:www.9streets.cn

     RewriteEngine on
     RewriteCond %{HTTP_HOST} ^efou.net [NC]
     RewriteRule ^(.*) http://www.9streets.cn/ [L]

例三.賽卡軟件近期更換了域名,新域名為www.sicasoft.com, 更加簡短好記。這時需要將原來的域名ss.kiya.cn, 以及論壇所在地址ss.kiya.cn/bbs/定向到新的域名,以便用戶可以找到,并且使原來的論壇 URL 繼續有效而不出現 404 未找到,比如原來的http://ss.kiya.cn/bbs/tread-60.html, 讓它在新的域名下繼續有效,點擊后轉發到http://bbs.sicasoft.com/tread-60.html,而其他網頁,如原先的http: //ss.kiya.cn/purchase不會到二級域名bbs.sicasoft.com/purchase上,而是到 www.sicasoft.com/purchase
按照這樣的要求重定向規則應該這樣寫:

     RewriteEngine On
     RewriteCond %{REQUEST_URI} ^/bbs/
     RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
     RewriteCond %{REQUEST_URI} !^/bbs/
     RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]

3.Apache mod_rewrite規則重寫的標志一覽

     1) R[=code](force redirect) 強制外部重定向
     強制在替代字符串加上http://thishost[:thisport]/前綴重定向到外部的URL.如果code不指定,將用缺省的302 HTTP狀態碼。
     2) F(force URL to be forbidden)禁用URL,返回403HTTP狀態碼。
     3) G(force URL to be gone) 強制URL為GONE,返回410HTTP狀態碼。
     4) P(force proxy) 強制使用代理轉發。
     5) L(last rule) 表明當前規則是最后一條規則,停止分析以后規則的重寫。
     6) N(next round) 重新從第一條規則開始運行重寫過程。
     7) C(chained with next rule) 與下一條規則關聯

     如果規則匹配則正常處理,該標志無效,如果不匹配,那么下面所有關聯的規則都跳過。

     8) T=MIME-type(force MIME type) 強制MIME類型
     9) NS (used only if no internal sub-request) 只用于不是內部子請求
     10) NC(no case) 不區分大小寫
     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) 傳遞給下一個處理
     例如:
     RewriteRule ^/abc(.*) /def$1 [PT] # 將會交給/def規則處理
     Alias /def /ghi
     14) S=num(skip next rule(s)) 跳過num條規則
     15) E=VAR:VAL(set environment variable) 設置環境變量

4.Apache rewrite例子集合

URL重定向

例子一:
同時達到下面兩個要求:
1.用http://www.9streets.cn/xxx.php 來訪問http://www9streets.cn/xxx/
2.用http://vote.9streets.cn 來訪問 http://www.9streets.cn/user.php?username=vote的功能

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

5.使用Apache的URL Rewrite配置多用戶虛擬服務器

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

然后,看一下我的Apache中關于*.kiya.us的虛擬主機的設定。

     ServerAdmin webmaster@kiya.us
     DocumentRoot /home/www/www.kiya.us
     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/www.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]

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

繼續看下去,在這里我就配置了URL Rewrite規則。

     RewriteEngine on #打開URL Rewrite功能
     RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配條件,如果用戶輸入的URL中主機名是類似 xxxx.kiya.us 或者 xxxx.kiya.cn 就執行下面一句
     RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用戶輸入完整的地址(GET方式的參數除外)作為參數傳給下一個規則,[C]是Chain串聯下一個規則的意思
     RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
     # 最關鍵的是這一句,使用證則表達式解析用戶輸入的URL地址,把主機名中的用戶名信息作為名為un的參數傳給/home/www/dev.kiya.us 目錄下的腳本,并在后面跟上用戶輸入的GET方式的傳入參數。并指明這是最后一條規則([L]規則)。注意,在這一句中指明的重寫后的地址用的是服務器上 的絕對路徑,這是內部跳轉。如果使用http://xxxx這樣的URL格式,則被稱為外部跳轉。使用外部跳轉的話,瀏覽著的瀏覽器中的URL地址會改變 成新的地址,而使用內部跳轉則瀏覽器中的地址不發生改變,看上去更像實際的二級域名虛擬服務器。

設置后重啟Apache服務器就大功告成了!
Update May 1, 2009

今天上網看到了有人提一個問題:

     求Rewrite 防盜鏈正則
     不允許www.49028c.com  www.chinaz.com 這兩個網站盜鏈 , 其它的網站都可以盜鏈的規則怎么寫.

論壇中的答案是:

     RewriteEngine On
     RewriteCond %{HTTP_REFERER} chinaz.com [NC]
     RewriteCond %{HTTP_REFERER} im286.com [NC]
     RewriteRule .*/.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]

Update May 7, 2009

介紹一篇文章:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

Update May 24, 2009

一、關于是否需要使用完全轉義,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz/.com
答案是,兩者都是可以的。

二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的變形)的時候,在 GoDaddy 主機上無法正常轉向,后來找到了問題:
在HostMonster以及我自己的機器上,是用
RewriteRule ^business/([^/.]+)$ biz/detail.php?name=$1 [L]
達到改寫的。而在Godaddy主機上,是這樣:
RewriteRule ^business/([^/.]+)$ /biz/detail.php?name=$1 [L]
目標文件前多了一個/
現在想想,可能是因為沒有指定RewriteBase,至于到底是不是我改日再驗證一下。

三、添加兩個關于判斷 USER AGENT 例子和自動添加.php擴展名及自動換.html到.php擴展名的例子:
1

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

2

     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

     限制目錄只能顯示圖片
     < IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{REQUEST_FILENAME} !^.*/.(gif|jpg|jpeg|png|swf)$
     RewriteRule .*$ – [F,L]
     < /IfModule>

Update Jun 10, 2009

補充,關于特定文件擴展名的重寫。

     重寫有某些擴展名的文件:
     RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
     如果要排除一些擴展名:
     RewriteRule !/.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲字幕在线观看| 国模精品一区二区三区色天香| 国产欧美精品久久久| 久久久电影免费观看完整版| 91精品国产综合久久香蕉| 不卡av电影在线观看| 国产视频欧美视频| 自拍亚洲一区欧美另类| 懂色av影视一区二区三区| 激情成人在线视频| 奇米成人av国产一区二区三区| 91久久精品久久国产性色也91| 中文字幕精品www乱入免费视频| 日韩美女视频中文字幕| 欧美午夜激情小视频| 欧美激情一区二区三区在线视频观看| 国产精品一久久香蕉国产线看观看| 成人久久一区二区三区| 大量国产精品视频| 国产精品久久久久av免费| 国产亚洲日本欧美韩国| 亚洲国产成人久久| 韩国三级电影久久久久久| 亚洲国产黄色片| 91精品久久久久久久久久| 亚洲精品xxx| 国产精品成久久久久三级| 久久福利网址导航| 久久激情视频免费观看| 久久久久久久一区二区| 国产中文字幕亚洲| 成人深夜直播免费观看| 日韩av电影免费观看高清| 在线观看中文字幕亚洲| 亚洲人成电影网站色www| 日韩女优人人人人射在线视频| 九九久久精品一区| 国产精选久久久久久| 色综合久久天天综线观看| 国产精品美女免费看| 中文字幕日韩电影| 最近更新的2019中文字幕| 日韩一区二区三区国产| 国产精品久久久久久久一区探花| 精品色蜜蜜精品视频在线观看| 国产精品视频区1| 亚洲最大福利视频| 91在线观看免费网站| 2019国产精品自在线拍国产不卡| 欧美国产日本在线| 国产精品三级美女白浆呻吟| 欧美视频第一页| 久久精品视频亚洲| 欧美日韩国产精品| 亚洲香蕉av在线一区二区三区| 午夜精品美女自拍福到在线| 国产精品国产自产拍高清av水多| 俺去了亚洲欧美日韩| 亚洲91精品在线观看| 欧美大学生性色视频| 久久久久国产精品一区| 国产精品久久久久不卡| 亚洲国产成人久久综合| 亚洲国产精品va在看黑人| 欧美性猛交xxxx乱大交极品| 日韩精品高清在线| 欧美壮男野外gaytube| 伊人激情综合网| 日韩电影在线观看永久视频免费网站| 久久99精品久久久久久青青91| 中文字幕自拍vr一区二区三区| 国产精品日本精品| 精品国内产的精品视频在线观看| 亚洲少妇激情视频| 欧美寡妇偷汉性猛交| 久久成人精品一区二区三区| 午夜精品久久久久久久男人的天堂| 欧美一级视频一区二区| 亚洲xxx视频| 一区二区三区美女xx视频| 国产精品美女午夜av| 欧美夫妻性生活视频| 精品亚洲精品福利线在观看| 国产成人精品最新| 亚洲福利在线播放| 亚洲第一免费播放区| 97视频在线观看免费| 国产精品久久9| 精品福利免费观看| 在线电影av不卡网址| 国产91精品网站| 欧美日韩性生活视频| 久久久精品日本| 国产一区二区三区18| 亚洲另类图片色| 亚洲人成在线免费观看| 久久精品中文字幕免费mv| 欧美亚洲第一区| 亚洲国产精品电影在线观看| 日韩人体视频一二区| 亚洲另类图片色| 亚洲一区亚洲二区| 久久综合伊人77777尤物| 欧美视频在线免费看| 亚洲影影院av| 国产日韩视频在线观看| 午夜精品视频在线| 韩国三级日本三级少妇99| 亚洲一二在线观看| 97碰碰碰免费色视频| 精品久久久久久久大神国产| 色爱av美腿丝袜综合粉嫩av| 亚洲精品国产精品自产a区红杏吧| 亚洲va电影大全| 日韩免费电影在线观看| 国产自产女人91一区在线观看| 国产成人精品久久亚洲高清不卡| 久久久久久久电影一区| 精品亚洲精品福利线在观看| 欧美性猛交xxxx黑人猛交| 亚洲国产精品福利| 中文字幕不卡av| 欧美精品久久久久a| 日韩欧美aⅴ综合网站发布| 国产精品美女主播| 亚洲综合中文字幕68页| 欧洲永久精品大片ww免费漫画| 欧美美女操人视频| 亚洲乱码一区av黑人高潮| 91香蕉亚洲精品| 日本伊人精品一区二区三区介绍| 国产精品免费久久久久久| www.亚洲天堂| 国产精品午夜视频| 日韩精品免费观看| 九九久久综合网站| 国产一区二区三区毛片| 亚洲国产高潮在线观看| 丝袜美腿精品国产二区| 亚洲精品国精品久久99热| 久久久在线观看| 尤物九九久久国产精品的分类| 亚洲精品欧美日韩专区| 日韩欧美国产免费播放| 欧美性感美女h网站在线观看免费| 中文字幕亚洲精品| 欧美性开放视频| 色综合久综合久久综合久鬼88| 国产成人小视频在线观看| 久热99视频在线观看| 精品国产依人香蕉在线精品| 久久亚洲综合国产精品99麻豆精品福利| 日韩av综合中文字幕| 国产成人一区二区三区| 久久免费国产精品1| 久久人人爽人人| 精品香蕉一区二区三区| 日本成人免费在线| 亚洲国产另类久久精品| 国产欧美最新羞羞视频在线观看| 日韩中文字幕在线播放| 欧美福利视频网站| 亚洲欧美制服第一页| 亚洲成人国产精品|