99久久婷婷国产一区二区免费-岛国一区二区在线播放-国产成人a人亚洲精品-麻豆黄片免费观看视频-岛国高清中文字幕av-国偷自产一区二区三区在线视频-亚洲男人的天堂官网-久久久久人妻精品一区-日韩情色中文字幕在线,成熟人妻av免,日本女性必看的欧美经典影片,国产精品99久久久久久久女警

朗創(chuàng)營銷,專業(yè)鄭州抖音推廣,鄭州短視頻代運(yùn)營,鄭州抖音代運(yùn)營服務(wù)公司 聯(lián)系我們:185-3093-0310
聯(lián)系電話

URL重寫指南

加入時間:2012-12-22 15:50:07文章來源: 朗創(chuàng)網(wǎng)絡(luò)營銷
URL重寫問題


URL重寫指南

 

Originally written by
Ralf S. Engelschall <rse@apache.org>
December 1997

 

本文是mod_rewrite的參考文檔,闡述在實(shí)際應(yīng)用中如何解決網(wǎng)管所面臨的基于URL的典型問題,并詳細(xì)描述如何配置URL重寫規(guī)則集以解決問題。

 

(1)URL的規(guī)劃
 

規(guī)范的URL
說明:
在有些網(wǎng)站服務(wù)器上,一個資源會擁有多個URL,在實(shí)際應(yīng)用和發(fā)布中應(yīng)該被使用的是規(guī)范的URL,其他的則是簡寫或者是內(nèi)部使用的。無論用戶在請求中使用什么形式的URL,他最終看見的都應(yīng)該是規(guī)范的URL。

方案:
對所有的不規(guī)范的URL執(zhí)行一個外部的HTTP重定向,以改變它在瀏覽器地址欄中的顯示及其后繼的請求。下例中的規(guī)則集用規(guī)范的/u/user替換/~user,并修正了/u/user所遺漏的后綴的斜杠。

RewriteRule   ^/~([^/]+)/?(.*)    /u/$1/$2  [R]
RewriteRule   ^/([uge])/([^/]+)$  /$1/$2/   [R]

 

(2)規(guī)范的主機(jī)名

方案:
RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]
RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://fully.qualified.domain.name/$1 [L,R]

 

(3)被移動過的DocumentRoot

說明:
通常,網(wǎng)站服務(wù)器的DocumentRoot直接對應(yīng)于URL"/",但是,它常常不是處于最高一級,而可能只是眾多數(shù)據(jù)池中的一個實(shí)體。比如,在Intranet站點(diǎn)中,有/e/www/(WWW的主頁)、/e/sww/ (Intranet的主頁)等等,而DocumentRoot指向了/e/www/,則必須保證此數(shù)據(jù)池中的所有內(nèi)嵌的圖片和其他元素對后繼請求有效。

方案:
只須重定向URL /到/e/www/即可。這個方案看起來很簡單,但只是有了mod_rewrite模塊的支持,它才簡單,因?yàn)閭鹘y(tǒng)的URL Aliases機(jī)制(由mod_alias及其相關(guān)模塊提供)只是作了一個前綴匹配,DocumentRoot是一個對所有URL的前綴,因而無法實(shí)現(xiàn)這樣的重定向。而用mod_rewrite的確很簡單:

RewriteEngine on
RewriteRule   ^/$  /e/www/  [R]

 

(4)后綴斜杠的問題

說明:
每個網(wǎng)管對引用目錄后綴斜杠的問題都有一本苦經(jīng),如果遺漏了,服務(wù)器會產(chǎn)生一個錯誤,因?yàn)槿绻埱笫?~quux/foo而不是/~quux/foo/,服務(wù)器會去找一個叫foo的文件,而它是一個目錄,所以就報錯了。事實(shí)上,大多數(shù)情況下,它自己會試圖修正這個錯誤,但是有時候需要你手工糾正,比如,在重寫了許多CGI腳本中的復(fù)雜的URL以后。

方案:
解決這個微妙問題的方案是讓服務(wù)器自動添加后綴的斜杠。對此,必須使用一個外部的重定向,使瀏覽器正確地處理后繼的對諸如圖片的請求。如果僅僅作一個內(nèi)部的重寫,可能只對目錄頁面有效,而對內(nèi)嵌有使用相對URL的圖片的頁面則無效,因?yàn)闉g覽器有請求內(nèi)嵌目標(biāo)的可能。比如,如果不用外部重定向,/~quux/foo/index.html頁面中對image.gif的請求,其結(jié)果將是/~quux/image.gif!。

所以,應(yīng)該這樣寫:

RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo$  foo/  [R]

又懶又瘋狂的做法是把這些寫入其宿主目錄中的頂級.htaccess中,但是須注意,如此會帶來一些處理上的開銷。

RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  -d
RewriteRule    ^(.+[^/])$           $1/  [R]

 

(5)集群網(wǎng)站的同類URL規(guī)劃


http://physical-host/u/user/anypath
http://physical-host/g/group/anypath
http://physical-host/e/entity/anypath

以下規(guī)則集依靠地圖文件來完成這個操作(假定,如果一個用戶在地圖中沒有對應(yīng)的項(xiàng),則使用server0為默認(rèn)服務(wù)器):

RewriteEngine on

RewriteMap      user-to-host   txt:/path/to/map.user-to-host
RewriteMap     group-to-host   txt:/path/to/map.group-to-host
RewriteMap    entity-to-host   txt:/path/to/map.entity-to-host

RewriteRule   ^/u/([^/]+)/?(.*)   http://${user-to-host:$1|server0}/u/$1/$2
RewriteRule   ^/g/([^/]+)/?(.*)  http://${group-to-host:$1|server0}/g/$1/$2
RewriteRule   ^/e/([^/]+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2

RewriteRule   ^/([uge])/([^/]+)/?$          /$1/$2/.www/
RewriteRule   ^/([uge])/([^/]+)/([^.]+.+)   /$1/$2/.www/$3\

 

(6)移動宿主目錄到不同的網(wǎng)站服務(wù)器

說明:
通常,許多網(wǎng)管在建立一個新的網(wǎng)站服務(wù)器時,都會有這樣的要求:重定向一個網(wǎng)站服務(wù)器上的所有宿主目錄到另一個網(wǎng)站服務(wù)器。

方案:
很簡單,用mod_rewrite。在老的網(wǎng)站服務(wù)器上重定向所有的URL /~user/anypath到http://newserver/~user/anypath

RewriteEngine on
RewriteRule   ^/~(.+)  http://newserver/~$1  [R,L]

 

(7)結(jié)構(gòu)化的宿主目錄

說明:
一些擁有幾千個用戶的網(wǎng)站通常都使用結(jié)構(gòu)化的宿主目錄規(guī)劃,即,每個宿主目錄位于一個帶有特定前綴比如其用戶名的第一個字符的子目錄下。那么,/~foo/anypath代表/home/f/foo/.www/anypath,而/~bar/anypath代表/home/b/bar/.www/anypath。

方案:
可以使用下列規(guī)則集來擴(kuò)展~以達(dá)到上述目的。

RewriteEngine on
RewriteRule   ^/~(([a-z])[a-z0-9]+)(.*)  /home/$2/$1/.www$3

 

(8)文件系統(tǒng)的重組

說明:
這是一個不加雕琢的例子:一個大量使用針對目錄的規(guī)則集以實(shí)現(xiàn)平滑觀感,而從來不用調(diào)整數(shù)據(jù)結(jié)構(gòu)的殺手級的應(yīng)用。背景:net.sw從1992年開始,存放了我收集的免費(fèi)的有效的Unix軟件包。它是我的愛好也是我的工作,因?yàn)樵趯W(xué)習(xí)計(jì)算機(jī)科學(xué)的同時,業(yè)余時間還做了多年的系統(tǒng)和網(wǎng)絡(luò)的管理員。每周我都需要整理軟件,因而建立了一個層次很深的目錄結(jié)構(gòu)來存放各種軟件包:

drwxrwxr-x   2 netsw  users    512 Aug  3 18:39 Audio/
drwxrwxr-x   2 netsw  users    512 Jul  9 14:37 Benchmark/
drwxrwxr-x  12 netsw  users    512 Jul  9 00:34 Crypto/
drwxrwxr-x   5 netsw  users    512 Jul  9 00:41 Database/
drwxrwxr-x   4 netsw  users    512 Jul 30 19:25 Dicts/
drwxrwxr-x  10 netsw  users    512 Jul  9 01:54 Graphic/
drwxrwxr-x   5 netsw  users    512 Jul  9 01:58 Hackers/
drwxrwxr-x   8 netsw  users    512 Jul  9 03:19 InfoSys/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:21 Math/
drwxrwxr-x   3 netsw  users    512 Jul  9 03:24 Misc/
drwxrwxr-x   9 netsw  users    512 Aug  1 16:33 Network/
drwxrwxr-x   2 netsw  users    512 Jul  9 05:53 Office/
drwxrwxr-x   7 netsw  users    512 Jul  9 09:24 SoftEng/
drwxrwxr-x   7 netsw  users    512 Jul  9 12:17 System/
drwxrwxr-x  12 netsw  users    512 Aug  3 20:15 Typesetting/
drwxrwxr-x  10 netsw  users    512 Jul  9 14:08 X11/

 

(9)方案

這個方案分為兩個部分:第一個部分,是用于在空閑時間建立所有目錄頁面的CGI腳本集。我把它們放在/e/netsw/.www/,如下:

-rw-r--r--   1 netsw  users    1318 Aug  1 18:10 .wwwacl
drwxr-xr-x  18 netsw  users     512 Aug  5 15:51 DATA/
-rw-rw-rw-   1 netsw  users  372982 Aug  5 16:35 LOGFILE
-rw-r--r--   1 netsw  users     659 Aug  4 09:27 TODO
-rw-r--r--   1 netsw  users    5697 Aug  1 18:01 netsw-about.html
-rwxr-xr-x   1 netsw  users     579 Aug  2 10:33 netsw-access.pl
-rwxr-xr-x   1 netsw  users    1532 Aug  1 17:35 netsw-changes.cgi
-rwxr-xr-x   1 netsw  users    2866 Aug  5 14:49 netsw-home.cgi
drwxr-xr-x   2 netsw  users     512 Jul  8 23:47 netsw-img/
-rwxr-xr-x   1 netsw  users   24050 Aug  5 15:49 netsw-lsdir.cgi
-rwxr-xr-x   1 netsw  users    1589 Aug  3 18:43 netsw-search.cgi
-rwxr-xr-x   1 netsw  users    1885 Aug  1 17:41 netsw-tree.cgi
-rw-r--r--   1 netsw  users     234 Jul 30 16:35 netsw-unlimit.lst

其中的DATA/子目錄包含了上述目錄結(jié)構(gòu),即實(shí)在的net.sw,由rdist在需要的時候自動更新。第二個部分的遺留問題是:如何連接這兩個結(jié)構(gòu)為一個平滑觀感的URL樹?我希望在運(yùn)行適當(dāng)?shù)腃GI腳本而使用各種URL的時候,使用戶感覺不到DATA/目錄的存在。方案如下:首先,我把下列配置放在服務(wù)器上DocumentRoot中的針對目錄的配置文件里,以重寫公布的URL /net.sw/ 為內(nèi)部路徑 /e/netsw:

RewriteRule  ^net.sw$       net.sw/        [R]
RewriteRule  ^net.sw/(.*)$  e/netsw/$1

第一條規(guī)則是針對遺漏后綴斜杠的請求的!第二條規(guī)則才是真正實(shí)現(xiàn)功能的。接著,就是放在針對目錄的配置文件/e/netsw/.www/.wwwacl中的殺手級的配置了:

Options       ExecCGI FollowSymLinks Includes MultiViews

RewriteEngine on

#  we are reached via /net.sw/ prefix
RewriteBase   /net.sw/

#  first we rewrite the root dir to
#  the handling cgi script
RewriteRule   ^$                       netsw-home.cgi     [L]
RewriteRule   ^index\.html$            netsw-home.cgi     [L]

#  strip out the subdirs when
#  the browser requests us from perdir pages
RewriteRule   ^.+/(netsw-[^/]+/.+)$    $1                 [L]

#  and now break the rewriting for local files
RewriteRule   ^netsw-home\.cgi.*       -                  [L]
RewriteRule   ^netsw-changes\.cgi.*    -                  [L]
RewriteRule   ^netsw-search\.cgi.*     -                  [L]
RewriteRule   ^netsw-tree\.cgi$        -                  [L]
RewriteRule   ^netsw-about\.html$      -                  [L]
RewriteRule   ^netsw-img/.*$           -                  [L]

#  anything else is a subdir which gets handled
#  by another cgi script
RewriteRule   !^netsw-lsdir\.cgi.*     -                  [C]
RewriteRule   (.*)                     netsw-lsdir.cgi/$1

閱讀提示:

注意前半部分中的標(biāo)志L(最后),和無對應(yīng)項(xiàng)('-')
注意后半部分中的符號!(非),和標(biāo)志C (鏈)
注意最后一條規(guī)則的全匹配模式

 

(10)NCSA imagemap和Apache mod_imap

說明:
許多人都希望在從NCSA網(wǎng)站服務(wù)器向較現(xiàn)代的Apache網(wǎng)站服務(wù)器轉(zhuǎn)移中實(shí)現(xiàn)平滑過渡,即希望老的NCSA imagemap程序能在Apache的較現(xiàn)代的mod_imap支持下正常運(yùn)作。但問題在于,到處都是通過/cgi-bin/imagemap/path/to/page.map引用imagemap程序的連接,而在Apache下,應(yīng)該寫成/path/to/page.map。

方案:
使用全局規(guī)則在空閑時間去除所有這些請求的前綴:

RewriteEngine  on
RewriteRule    ^/cgi-bin/imagemap(.*)  $1  [PT]

 

更多數(shù)據(jù)請參考:Apache 2.0手冊中文版翻譯項(xiàng)目 http://man.chinaunix.net/newsoft/ApacheManual/misc/rewriteguide.html

久久久国产99久久国产久一-日韩精品国产中文字幕-日韩av蜜桃免费看-69啪啪啪精品网站 | 丁香啪啪五月天-日韩中文字幕a-久久久久久久久毛片精品直播-日韩av天堂手机在线观看 | 日韩一级av在线免费播放-久久久中文字幕久久久-成人免费电影中文字幕-91久久精品国产成人久久 | 日韩精品高清在线观看视频-91精品伊人一区二区三区-欧美日韩成人精品在线视频-91精品综合久久久久久久久久久 | 日韩一卡二卡三卡四卡无卡高清-av毛片一区二区在线观看-亚洲高潮喷水视频在线观看-99 re热这里只有精品视频 | 欧美人妻视频一区二区三区-北野未奈在线中文字幕-91大神中文字幕在线观看-欧美日韩国产成人一区 日韩亚洲欧美成人-日韩精品视频中文字幕-国产又粗又爽又圆的视频-欧美另类乱交少妇 | 91精品久久日日躁夜夜躁-91久久人澡人人添人人爽欧美-成人a∨片日本一区二区三区-欧美亚洲国产第一区第二区第三区 | 五月婷婷的中文字幕-国产a v麻豆精品-六月婷婷六月婷婷六月婷婷-午夜精品乱码久久久久 | 午夜精品久久久内射-mm在线精品视频在线观看-人妻精品一区二区三区,-午夜精品老牛av一区 | 欧美日韩一二三在线-日韩人妻中文字幕精选-av天堂中文网一区-麻豆网站一区二区三区 | 超碰在线手机免费观看-欧美日韩日日骚-亚洲中文字幕五月天在线观看-精品人妻二区av | 国产亚洲精品91av久久久-国内不卡不区二区三区-超碰人妻在线观看-91精品啪在线观看国产91蜜桃 | 国产乱色乱子伦一区二区三区-久久国产精品国内网站-日韩在线精品免费视频-成人综合网站色av | 超碰大香蕉超碰-久久亚洲精品成人国产-久久精品欧美色吧同性恋-国产精品97久久久久久人妻 | 欧美另类色熟妇-久久天天操狠狠夜夜操-91免费看国产nb-国内视频免费久久久 | 91成人免费在线观看视频-久久免费精品视频8-日韩欧美在线高清视频-日韩少妇熟女av在线观看 | 久热这里只有免费精品-午夜婷婷色婷婷-久久99国产精品成人含羞草-日韩视频―中文字幕 | 天天操天天日天天射天天爽-欧美 日韩 亚洲一区-日韩成人免费大片-日韩欧美人妻中文字幕一区 | 91久久久久久99精品国产元码-国产又粗又长又黑-麻豆专区系列在线观看-uuess久久视频在线观看 | 夫妻久久免费视频中文字幕-99国产精品人妻无-97超碰免费资源站-久久亚洲人妻一区二区三区 | 久久精品熟女亚洲av天美-久久久久婷婷综合网-激情五月天视频在线观看-懂色aⅴ人妻精品一区 | 国产欧美日韩免费看-久久艹视频在线视频-精品久久久久久久换人妻69-麻豆成人在线观看网站 | 久久天天躁夜夜躁狠狠85-欧美蜜桃臀波霸大屁股-97久久国产精品久久久久-国产精品 国产剧情 | 国产成人亚洲综合网站-人妻系列中文字幕一区-久久91这里精品国产2020-91日韩精品在线播放 | 久久精品国产亚洲av麻豆网站-日韩 在线 制服 丝袜 国产-欧美日韩国产在线综合一区-日韩av在线免费大片 | 91久久美女视频-伊人久久婷婷色-亚洲欧美日韩熟女-日本aaaa视频在线观看 | 亚洲欧美国产精品久久久久久久-99精品在线播放观看视频-亚洲视频精品久久-丝袜人妻视频久久久久久 | 欧美日韩1区2区3区4区5区-伊人久久婷婷色综合98网-日韩精品高清视频在线免费观看-天天操俄罗斯胖女人逼视频 | 中文字幕一区二区三区三区-亚洲综合精品视频在线观看-av日韩在线中文字幕-超碰979大香蕉 | 欧美少妇韩国日本一区二区-日韩精品99久久久久中文字幕-日韩在线成人免费播放-国产精品高潮呻吟久久av嫩 | 蜜桃专区一区二区三区-日韩亚洲区欧美一区-熟妇人妻久久精品一区二区-人妻日韩中文字幕在线 | 欧美激情一区 二区 三区-久久99精品国产麻豆91-激情人妻在线播放-日韩欧美男女高清 | 9999久久精品国产-国产一区二区欧美在线观看-99精品视频在线观看-加勒比中文字幕在线视频 | 亚洲中文字幕日韩制服诱惑-99热成人精品国产免男男-日韩欧美极品人妻-超碰91在线观看视频 | 99久久无色码人妻人人-人妻少妇久久久久久97人妻二-91国产一区二区三区-福利视频一区二区区 | 色哟哟在线观看永久免费视频-亚洲制服人妻另类小说-五月琪琪六月丁香-岛国一区二区三区在线观看 精品91久久久久a-欧美少女中文字幕-久久综合久久狠狠综合-182tv午夜麻豆成人av | 久久久亚洲成人精品色午麻豆-久久久一区二区三区91-日韩中文字幕高清播放-欧美日韩国产一区二区在线看 | 国产成人99久久精品激情-美女视频图片一区二区黄-91久久人妻丝袜一区二区三区-69色视频在线观看 国产精品久久久久精-久久精品a毛片看国产成人-国产资源在线播放6-18久久精品免费观看视频 | 欧美黑人巨大黑人猛交中文-久久综合狠狠激情-人妻少妇精品中文字幕-国产亚洲欧美一二区 | 欧美日韩制服丝袜寝取在线-九九热99在线视频观看-亚洲欧洲suv精品-九九热精品在线免费 | 91精品国产麻豆国产在线观看-久久伊人精品一区二区-91亚洲成人精品在线播放-91人妻人人澡人人爽人人r精品 |