Apache Rewrite實(shí)現(xiàn)URL的301跳轉(zhuǎn)和域名跳轉(zhuǎn)
更新時間:2012年05月29日 22:30:16 作者:
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。
2、舉例說明:
例一.下面是在一個虛擬主機(jī)里定義的規(guī)則。功能是把client請求的主機(jī)前綴不是www.dhdzp.com和70.40.213.183都跳轉(zhuǎn)到主機(jī)前綴為http://www.dhdzp.com,避免相同內(nèi)容的網(wǎng)頁有多個指向的域名,如http://jb51.net。
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@jb51.net
DocumentRoot “/web”
ServerName jb51.net
RewriteEngine on #打開rewirte功能
RewriteCond %{HTTP_HOST} !^www.dhdzp.com [NC] #聲明Client請求的主機(jī)中前綴不是www.dhdzp.com,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #聲明Client請求的主機(jī)中前綴不是70.40.213.183,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^$ #聲明Client請求的主機(jī)中前綴不為空
RewriteRule ^(.*) http://www.dhdzp.com/ [L] #含義是如果Client請求的主機(jī)中的前綴符合上述條件,則直接進(jìn)行跳轉(zhuǎn)到http://www.dhdzp.com/,[L]意味著立即停止重寫操作,并不再應(yīng)用其他重寫規(guī)則。這里的.*是指匹配所有URL中不包含換行字符,()括號的功能是把所有的字符做一個標(biāo)記,以便于后面的應(yīng)用.就是引用前面里的 (.*)字符。
例二.將輸入 en.jb51.net 的域名時跳轉(zhuǎn)到www.dhdzp.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.jb51.net [NC]
RewriteRule ^(.*) http://www.dhdzp.com/ [L]
例三.賽卡軟件近期更換了域名,新域名為www.dhdzp.com, 更加簡短好記。這時需要將原來的域名ss.jb51.net, 以及論壇所在地址ss.jb51.net/bbs/定向到新的域名,以便用戶可以找到,并且使原來的論壇 URL 繼續(xù)有效而不出現(xiàn) 404 未找到,比如原來的http://ss.jb51.net/bbs/tread-60.html, 讓它在新的域名下繼續(xù)有效,點(diǎn)擊后轉(zhuǎn)發(fā)到http://bbs.jb51.net/tread-60.html,而其他網(wǎng)頁,如原先的http: //ss.jb51.net/purchase不會到二級域名bbs.jb51.net/purchase上,而是到 www.dhdzp.com/purchase
按照這樣的要求重定向規(guī)則應(yīng)該這樣寫:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.jb51.net/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.dhdzp.com/$1 [R=permanent,L]
3.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)境變量
4.Apache rewrite例子集合
URL重定向
例子一:
同時達(dá)到下面兩個要求:
1.用http://www.zzz.com/xxx.php 來訪問 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 來訪問 http://www.zzz.com/user.php?username=yyy 的功能
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配置多用戶虛擬服務(wù)器
要實(shí)現(xiàn)這個功能,首先要在DNS服務(wù)器上打開域名的泛域名解析(自己做或者找域名服務(wù)商做)。比如,我就把 *.kiya.us和 *.jb51.net全部解析到了我的IP地址70.40.213.183上。
然后,看一下我的Apache中關(guān)于*.kiya.us的虛擬主機(jī)的設(shè)定。
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]
在這段設(shè)定中,我把*.jb51.net和*.kiya.us 的Document Root都設(shè)定到了 /home/www/www.kiya.us
繼續(xù)看下去,在這里我就配置了URL Rewrite規(guī)則。
RewriteEngine on #打開URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配條件,如果用戶輸入的URL中主機(jī)名是類似 xxxx.kiya.us 或者 xxxx.jb51.net 就執(zhí)行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用戶輸入完整的地址(GET方式的參數(shù)除外)作為參數(shù)傳給下一個規(guī)則,[C]是Chain串聯(lián)下一個規(guī)則的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最關(guān)鍵的是這一句,使用證則表達(dá)式解析用戶輸入的URL地址,把主機(jī)名中的用戶名信息作為名為un的參數(shù)傳給/home/www/dev.kiya.us 目錄下的腳本,并在后面跟上用戶輸入的GET方式的傳入?yún)?shù)。并指明這是最后一條規(guī)則([L]規(guī)則)。注意,在這一句中指明的重寫后的地址用的是服務(wù)器上的絕對路徑,這是內(nèi)部跳轉(zhuǎn)。如果使用http://xxxx這樣的URL格式,則被稱為外部跳轉(zhuǎn)。使用外部跳轉(zhuǎn)的話,瀏覽著的瀏覽器中的URL地址會改變成新的地址,而使用內(nèi)部跳轉(zhuǎn)則瀏覽器中的地址不發(fā)生改變,看上去更像實(shí)際的二級域名虛擬服務(wù)器。
設(shè)置后重啟Apache服務(wù)器就大功告成了!
Update May 1, 2009
今天上網(wǎng)看到了有人提一個問題:
求Rewrite 防盜鏈正則
不允許www.im286.com www.chinaz.com 這兩個網(wǎng)站盜鏈 , 其它的網(wǎng)站都可以盜鏈的規(guī)則怎么寫.
論壇中的答案是:
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
一、關(guān)于是否需要使用完全轉(zhuǎn)義,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz\.com
答案是,兩者都是可以的。
二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的變形)的時候,在 GoDaddy 主機(jī)上無法正常轉(zhuǎn)向,后來找到了問題:
在HostMonster以及我自己的機(jī)器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
達(dá)到改寫的。而在Godaddy主機(jī)上,是這樣:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目標(biāo)文件前多了一個/
現(xiàn)在想想,可能是因?yàn)闆]有指定RewriteBase,至于到底是不是我改日再驗(yàn)證一下。
三、添加兩個關(guān)于判斷 USER AGENT 例子和自動添加.php擴(kuò)展名及自動換.html到.php擴(kuò)展名的例子:
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
補(bǔ)充,關(guān)于特定文件擴(kuò)展名的重寫。
重寫有某些擴(kuò)展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些擴(kuò)展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php
基于服務(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。
2、舉例說明:
例一.下面是在一個虛擬主機(jī)里定義的規(guī)則。功能是把client請求的主機(jī)前綴不是www.dhdzp.com和70.40.213.183都跳轉(zhuǎn)到主機(jī)前綴為http://www.dhdzp.com,避免相同內(nèi)容的網(wǎng)頁有多個指向的域名,如http://jb51.net。
復(fù)制代碼 代碼如下:
NameVirtualHost 70.40.213.183:80
ServerAdmin slj@jb51.net
DocumentRoot “/web”
ServerName jb51.net
RewriteEngine on #打開rewirte功能
RewriteCond %{HTTP_HOST} !^www.dhdzp.com [NC] #聲明Client請求的主機(jī)中前綴不是www.dhdzp.com,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^70.40.213.183 [NC] #聲明Client請求的主機(jī)中前綴不是70.40.213.183,其中 [NC] 的意思是忽略大小寫
RewriteCond %{HTTP_HOST} !^$ #聲明Client請求的主機(jī)中前綴不為空
RewriteRule ^(.*) http://www.dhdzp.com/ [L] #含義是如果Client請求的主機(jī)中的前綴符合上述條件,則直接進(jìn)行跳轉(zhuǎn)到http://www.dhdzp.com/,[L]意味著立即停止重寫操作,并不再應(yīng)用其他重寫規(guī)則。這里的.*是指匹配所有URL中不包含換行字符,()括號的功能是把所有的字符做一個標(biāo)記,以便于后面的應(yīng)用.就是引用前面里的 (.*)字符。
例二.將輸入 en.jb51.net 的域名時跳轉(zhuǎn)到www.dhdzp.com
復(fù)制代碼 代碼如下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^en.jb51.net [NC]
RewriteRule ^(.*) http://www.dhdzp.com/ [L]
例三.賽卡軟件近期更換了域名,新域名為www.dhdzp.com, 更加簡短好記。這時需要將原來的域名ss.jb51.net, 以及論壇所在地址ss.jb51.net/bbs/定向到新的域名,以便用戶可以找到,并且使原來的論壇 URL 繼續(xù)有效而不出現(xiàn) 404 未找到,比如原來的http://ss.jb51.net/bbs/tread-60.html, 讓它在新的域名下繼續(xù)有效,點(diǎn)擊后轉(zhuǎn)發(fā)到http://bbs.jb51.net/tread-60.html,而其他網(wǎng)頁,如原先的http: //ss.jb51.net/purchase不會到二級域名bbs.jb51.net/purchase上,而是到 www.dhdzp.com/purchase
按照這樣的要求重定向規(guī)則應(yīng)該這樣寫:
復(fù)制代碼 代碼如下:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.jb51.net/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.dhdzp.com/$1 [R=permanent,L]
3.Apache mod_rewrite規(guī)則重寫的標(biāo)志一覽
復(fù)制代碼 代碼如下:
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ī)則都跳過。
復(fù)制代碼 代碼如下:
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)境變量
4.Apache rewrite例子集合
URL重定向
例子一:
同時達(dá)到下面兩個要求:
1.用http://www.zzz.com/xxx.php 來訪問 http://www.zzz.com/xxx/
2.用http://yyy.zzz.com 來訪問 http://www.zzz.com/user.php?username=yyy 的功能
復(fù)制代碼 代碼如下:
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
復(fù)制代碼 代碼如下:
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配置多用戶虛擬服務(wù)器
要實(shí)現(xiàn)這個功能,首先要在DNS服務(wù)器上打開域名的泛域名解析(自己做或者找域名服務(wù)商做)。比如,我就把 *.kiya.us和 *.jb51.net全部解析到了我的IP地址70.40.213.183上。
然后,看一下我的Apache中關(guān)于*.kiya.us的虛擬主機(jī)的設(shè)定。
復(fù)制代碼 代碼如下:
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]
在這段設(shè)定中,我把*.jb51.net和*.kiya.us 的Document Root都設(shè)定到了 /home/www/www.kiya.us
繼續(xù)看下去,在這里我就配置了URL Rewrite規(guī)則。
復(fù)制代碼 代碼如下:
RewriteEngine on #打開URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.kiya.(cn|us)$ #匹配條件,如果用戶輸入的URL中主機(jī)名是類似 xxxx.kiya.us 或者 xxxx.jb51.net 就執(zhí)行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用戶輸入完整的地址(GET方式的參數(shù)除外)作為參數(shù)傳給下一個規(guī)則,[C]是Chain串聯(lián)下一個規(guī)則的意思
RewriteRule ^([^.]+).kiya.(cn|us)(.*)$ /home/www/dev.kiya.us/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最關(guān)鍵的是這一句,使用證則表達(dá)式解析用戶輸入的URL地址,把主機(jī)名中的用戶名信息作為名為un的參數(shù)傳給/home/www/dev.kiya.us 目錄下的腳本,并在后面跟上用戶輸入的GET方式的傳入?yún)?shù)。并指明這是最后一條規(guī)則([L]規(guī)則)。注意,在這一句中指明的重寫后的地址用的是服務(wù)器上的絕對路徑,這是內(nèi)部跳轉(zhuǎn)。如果使用http://xxxx這樣的URL格式,則被稱為外部跳轉(zhuǎn)。使用外部跳轉(zhuǎn)的話,瀏覽著的瀏覽器中的URL地址會改變成新的地址,而使用內(nèi)部跳轉(zhuǎn)則瀏覽器中的地址不發(fā)生改變,看上去更像實(shí)際的二級域名虛擬服務(wù)器。
設(shè)置后重啟Apache服務(wù)器就大功告成了!
Update May 1, 2009
今天上網(wǎng)看到了有人提一個問題:
求Rewrite 防盜鏈正則
不允許www.im286.com www.chinaz.com 這兩個網(wǎng)站盜鏈 , 其它的網(wǎng)站都可以盜鏈的規(guī)則怎么寫.
論壇中的答案是:
復(fù)制代碼 代碼如下:
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
一、關(guān)于是否需要使用完全轉(zhuǎn)義,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中 把 chinaz.com 改成 chinaz\.com
答案是,兩者都是可以的。
二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的變形)的時候,在 GoDaddy 主機(jī)上無法正常轉(zhuǎn)向,后來找到了問題:
在HostMonster以及我自己的機(jī)器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
達(dá)到改寫的。而在Godaddy主機(jī)上,是這樣:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目標(biāo)文件前多了一個/
現(xiàn)在想想,可能是因?yàn)闆]有指定RewriteBase,至于到底是不是我改日再驗(yàn)證一下。
三、添加兩個關(guān)于判斷 USER AGENT 例子和自動添加.php擴(kuò)展名及自動換.html到.php擴(kuò)展名的例子:
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
補(bǔ)充,關(guān)于特定文件擴(kuò)展名的重寫。
重寫有某些擴(kuò)展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些擴(kuò)展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php
您可能感興趣的文章:
- Nginx下301重定向域名的方法小結(jié)
- 比較詳細(xì)的win2003 IIS6.0 301重定向帶參數(shù)的問題解決方法
- IIS7.5下301重定向的設(shè)置方法(及偽靜態(tài)后301重定向出錯案例)
- php 301轉(zhuǎn)向?qū)崿F(xiàn)代碼
- iis下設(shè)置301 Redirect 永久重定向的方法
- php 實(shí)現(xiàn)301重定向跳轉(zhuǎn)實(shí)例代碼
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法
- nginx提示:500 Internal Server Error錯誤的解決方法
- HTTP錯誤500.19解決方法(定義了重復(fù)的節(jié)點(diǎn))
- http狀態(tài)碼匯總及問題經(jīng)驗(yàn)總結(jié)
- javascript學(xué)習(xí)筆記(七)Ajax和Http狀態(tài)碼
- ASP.NET設(shè)置404頁面返回302HTTP狀態(tài)碼的解決方法
- http狀態(tài)碼一覽表
- PHP獲取訪問頁面HTTP狀態(tài)碼的實(shí)現(xiàn)代碼
- 前端獲取http狀態(tài)碼400的返回值實(shí)例
- 詳解HTTP狀態(tài)碼
- 10個常見的HTTP狀態(tài)碼詳解
相關(guān)文章
Ubuntu18 給terminal改個漂亮的命令行提示符的方法
這篇文章主要介紹了Ubuntu18 給terminal改個漂亮的命令行提示符的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
Linux下實(shí)現(xiàn)UTF-8和GB2312互相轉(zhuǎn)換的方法
下面小編就為大家?guī)硪黄狶inux下實(shí)現(xiàn)UTF-8和GB2312互相轉(zhuǎn)換的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦2016-12-12
在CentOS中部署多節(jié)點(diǎn)Citus集群的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于在CentOS中部署多節(jié)點(diǎn)Citus集群的詳細(xì)步驟,文中將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
解決Linux程序編譯鏈接動態(tài)庫版本的相關(guān)問題
這篇文章主要介紹了解決Linux程序編譯鏈接動態(tài)庫版本的相關(guān)問題,文中給出了詳細(xì)的介紹和示例代碼,相信對大家具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。2017-01-01
Linux報錯:tar: Error Is Not Recoverable:&n
本文介紹了在Linux系統(tǒng)下解壓`.tar.gz`文件時遇到的錯誤及其解決方法,錯誤通常是由于文件下載不完整或參數(shù)設(shè)置錯誤引起的,解決方法包括:1. 去掉解壓參數(shù)中的`z`,改為`tar -xvf xx.tar.gz`,適合非gzip過濾歸檔文件;2. 重新下載或上傳文件,確保文件完整性2025-02-02
LNMP下FTP服務(wù)器的安裝與使用方法(Pureftpd和Proftpd)
FTP是網(wǎng)站文件維護(hù)中使用比較多的,目前LNMP一鍵安裝包中有Pureftpd和Proftpd服務(wù)器安裝腳本2013-06-06

