麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > Apache > 正文

Apache rewrite重寫規(guī)則的常見應(yīng)用

2024-08-27 18:30:13
字體:
供稿:網(wǎng)友
 
一、為什么需要用重寫規(guī)則 
---- 網(wǎng)站的生命在于不斷地進(jìn)行更新和維護(hù),根據(jù)業(yè)務(wù)發(fā)展的需求轉(zhuǎn)移服務(wù)器進(jìn)行維護(hù)、重新組織目錄結(jié)構(gòu)、變換URL甚至改變到新的域名等情況是經(jīng)常發(fā)生的。為了讓客戶不會因此受到任何影響,最好的方法就是使用Apache Rewrite Rule(重寫規(guī)則)。 
二、重寫規(guī)則的作用范圍 
---- 1.使用在Apache主配置文件httpd.conf中。 
---- 2.使用在httpd.conf里定義的配置中。 
---- 3.使用在基本目錄的跨越配置文件.htaccess中。 
三、重寫規(guī)則的應(yīng)用條件 
---- 當(dāng)用戶的Web請求最終被導(dǎo)向到某臺Web服務(wù)器的Apache守護(hù)進(jìn)程,Apache根據(jù)配置文件判斷該請求是主配置還是,再根據(jù)用戶在瀏覽器中請求的URL來匹配重寫規(guī)則,并且根據(jù)實際的請求路徑匹配.htaccess中的重寫規(guī)則,最后把請求的內(nèi)容傳回給用戶。該響應(yīng)可能有2種。 
---- 1.將請求內(nèi)容外部重定向(Redirect)到另一個URL 
---- 讓瀏覽器再次以新的URL發(fā)出請求(R=301或者R=302,臨時的或是永久的重定向)。 
---- 例如,一個網(wǎng)站有正規(guī)的URL和別名URL,對別名URL進(jìn)行重定向到正規(guī)URL,或者網(wǎng)站改換成了新的域名,則把舊的域名重定向到新的域名。 
---- 2.由Apache內(nèi)部子請求代理產(chǎn)生新的內(nèi)容送回給客戶[P,L] 
---- 這是Apache內(nèi)部根據(jù)重寫后的URL,通過代理模塊請求內(nèi)容并將最終內(nèi)容送回給客戶,客戶端瀏覽器不必再次請求,瀏覽器中的URL不會被重寫,但實際內(nèi)容由Apache根據(jù)重寫規(guī)則后的URL生成。 
---- 例如,在公司防火墻上運行的Apache啟動這種代理重寫規(guī)則,代理對內(nèi)部網(wǎng)段上的Web服務(wù)器的請求。 
四、重寫規(guī)則怎樣工作 
---- 我們假定在編譯Apache時已經(jīng)把mod_rewrite編譯成模塊,確信您的httpd.conf中有LoadModule rewrite_module libexec/mod_rewrite.so,并且在Addmodule中有Addmodule mod_rewrite.c,則可以使用重寫規(guī)則。 
---- 當(dāng)外部請求到達(dá)Apache,Apache調(diào)用重寫規(guī)則中的定義來重寫由用戶瀏覽器指定請求的URL,最后被重寫的URL如果是重定向,則送交瀏覽器做再一次請求;如果是代理則把重寫后的URL交給代理模塊請求最終的內(nèi)容(Content),最后把內(nèi)容送回給瀏覽器。 
五、何時使用.htaccess中的重寫規(guī)則定義 
---- 假如您對網(wǎng)站內(nèi)容所在的服務(wù)器沒有管理員權(quán)限,或者您的網(wǎng)站內(nèi)容放在ISP的服務(wù)器上托管,無法改寫主配置文件,但是您對Web站點內(nèi)容所在的目錄有寫權(quán)限,則可以設(shè)置自己的.htaccess文件達(dá)到同樣的目的。但您需要確定主配置文件中對您的網(wǎng)站所在的目錄定義了下面的內(nèi)容,否則您的.htaccess不會工作。 
---- < Directory /usr/local/apache/htdocs/www.abc.com> options indexes followsymLinks 
---- allowoverride all 
---- < /Directory > 
六、應(yīng)用舉例 
---- 假定Apache被編譯安裝在主機(jī)192.168.1.56的/usr/local/apache目錄下面,同時編譯了重寫和代理模塊。 
---- 1.隱藏Apache下的某個目錄,使得對該目錄的任何請求都重定向到另一個文件 
---- (1)httpd.conf的實現(xiàn)方法 
---- 我們將下面的部分放到/usr/local/apache/conf/httpd.conf中。 
---- < Directory "/usr/local/apache/htdocs/manual/"> options Indexes followsymlinks 
---- allowoverride all 
---- rewriteengine on 
---- rewritebase / 
---- rewriterule ^(.*)$ index.html.en [R=301] 
---- < /Directory > 
---- 注: “rewriteengine on”為重寫引擎開關(guān),如果設(shè)為“off”,則任何重寫規(guī)則定義將不被應(yīng)用,該開關(guān)的另一用處就是如果為了臨時去掉重寫規(guī)則,可以將引擎開關(guān)設(shè)為“off”再重新啟動Apache即可,不必將其中的各條重寫規(guī)則注釋掉。 
---- “rewritebase /”的作用是如果在下面的rewriterule定義中被重寫后的部分(此處為文件名index.html.en)前面沒有“/”,則表明是相對目錄,相對于這個rewritebase后面的定義也就是/usr/local/apache/htdocs/index.html.en,否則,如果此處沒有“rewritebase /”這一項,則被重寫成,顯然是不正確的。 
---- 我們也可以不用“rewritebase /”,而是將其改為如下部分。 
---- rewriteengine on 
---- rewriterule ^(.*)$ /index.html.en [R=301] 
---- 或者更改為: 
---- rewriteengine on 
---- rewriterule ^(.*)$ [R=301] 
---- (2).htaccess的實現(xiàn)方法 
---- 我們將下面的部分放到httpd.conf中。 
---- < Directory "/usr/local/apache/htdocs/manual/"> options Indexes followsymlinks 
---- allowoverride all 
---- < /Directory > 
---- 然后將下面的部分放到/usr/local/apache/htdocs/manual/.htaccess中。 
---- rewriteengine on 
---- rewritebase / 
---- rewriterule ^(.*)$ index.html.en [R=301] 
---- 注: 對文件.htaccess所做的任何改動不需要重啟動Apache。 
---- 您還可以利用.htaccess方案將這個manual目錄重定向到用戶jephe自己的主目錄。 
---- rewriteengine on 
---- rewritebase /~jephe/ 
---- rewriterule ^(.*)$ $1 [R=301] 
---- 這樣,對manual目錄下任何文件的請求被重定向到~jephe目錄下相同文件的請求。 
---- 2.將對于username的主頁請求轉(zhuǎn)換為對的請求 
---- 對于HTTP/1.1的請求包括一個Host: HTTP頭,我們能用下面的規(guī)則集重寫 .com/anypath到/home/username/anypath。 
---- rewriteengine on 
---- rewritecond %{HTTP_HOST} ^[^.]+.host.com$ 
---- rewriterule ^(.+) %{HTTP_HOST}$1 [C] 
---- rewriterule ^([^.]+).host.com(.*) /home/$1$2 
---- 注: “rewritecond”表明是條件重寫規(guī)則,當(dāng)滿足后面定義的條件后才會應(yīng)用下面的重寫規(guī)則,“rewritecond”有各種變量,請查閱相關(guān)文檔。 
---- 3.防火墻上的重寫規(guī)則代理內(nèi)部網(wǎng)段上服務(wù)器的請求 
---- NameVirtualhost 1.2.3.4 
---- < Virtualhost 1.2.3.4:80 > servername 
---- rewriteengine on 
---- proxyrequest on 
---- rewriterule ^/(.*)$ [P,L] 
---- < /Virtualhost > 
---- 注: 當(dāng)外部瀏覽器請求時,將被解析到IP地址1.2.3.4,Apache交由mod_rewrite處理,轉(zhuǎn)換成后再交由代理模塊mod_proxy,得到內(nèi)容后傳送回用戶的瀏覽器。 
---- 4.基本預(yù)先設(shè)定的轉(zhuǎn)換Map表進(jìn)行重寫rewritemap 
---- 轉(zhuǎn)換到Map表中規(guī)定的URL,前面是中的定義。 
---- rewritelog /usr/local/apache/logs/rewrite.log 
---- rewriteloglevel 9 
---- rewriteengine on 
---- proxyrequest on 
---- rewritemap sitemap txt:/usr/local/apache/conf/rewrite.map 
---- rewriterule ^/([^/]+)+/(.*)$ [C] 
---- rewriterule (.*)::([a-z]+)$ ${sitemap:$2|} [R=301,L] 
---- 文件/usr/local/apache/conf/rewrite.map的內(nèi)容如下: 
---- sg 
---- sh 
---- 注: 當(dāng)用戶請求時被重寫為。當(dāng)需要調(diào)試時請用rewritelog和 rewriteloglevel 9聯(lián)合,9為最大,即得到最多的調(diào)試信息;最小為1,表示得到最少的調(diào)試信息;默認(rèn)為0,表示沒有調(diào)試信息。 
---- sitemap的語法是${sitemap: LookupKey | Defaultvalue},有些書上把$寫成了%是錯誤的。 
(作者:吳阿亭)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产合集91合集久久日 | 国产自在线 | 欧美成人一级片 | 久久亚洲春色中文字幕久久 | 国产精品国产成人国产三级 | 日韩毛片在线看 | 一区二区三级视频 | 久久色播| 精品一区二区三区免费毛片 | 91 视频网站 | 国产在线色 | 一级α片免费看刺激高潮视频 | 欧美成人精品欧美一级乱黄 | 国产羞羞视频在线观看 | 99精品国产成人一区二区 | 久久成人视屏 | 国产一级毛片高清视频完整版 | 久久9久久 | 欧美黄色免费视频 | 在线成人一区二区 | av在线免费观看不卡 | 国产一级毛片高清 | 精品国产一区二 | 毛片免费视频播放 | 成人观看网站 | 97风流梦电影 | 激情在线观看视频 | 天堂精品 | 婷婷久久综合九色综合色多多蜜臀 | 久久精品中文字幕一区 | 精品国产一区二区三区久久久 | 久久久久久久高清 | 特逼视频 | 日本在线观看高清完整版 | 久久午夜免费视频 | 91久久夜色精品国产网站 | 国产妞干网 | 九九热精品在线播放 | 亚洲国产精品一区二区精品 | 九九热精品免费视频 | 日韩在线毛片 |