|
ÀÁÐÀÊÀÄÀÁÐÀ (Òîæå ñàìîå íî â ÷èòàåìîì âèäå)
Äj,hj gj;fkjdfnm d vbh mod_rewrite, idtqwfhcrbq yj; URL ghtj,hfpjdfybq! Äfyysq vjlekm ghtlcnfdkztn cj,jq jcyjdfyysq yf ghfdbkf[ vt[fybpv (cbynfrcbxtcrbq fyfkbpfnjh c ghbvtytybtv htuekzhys[ dshf;tybq), dsgjkyz.obq URL ghtj,hfpjdfybz yf ktne. Ìjlekm gjllth;bdftn ytjuhfybxtyyjt rjkbxtcndj ghfdbk b cdzpfyys[ c rf;lsv ghfdbkjv eckjdbq, htfkbpez ltqcndbntkmyj ub,rbq b vjoysq vt[fybpv eghfdktybz URL. URL ghtj,hfpjdfybz vjuen bcgjkmpjdfnm hfpyst bcnjxybrb lfyys[, yfghbvth gthtvtyyst cthdthf, gthtvtyyst jrhe;tybz, HTTP pfujkjdrb, dhtvz b lf;t pfghjcs r dytiybv ,fpfv lfyys[ d hfpys[ ajhvfnf[, — lkz gjkextybz URL ye;yjuj dfv dblf.
Ýnjn vjlekm jgthbhetn c gjkysvb URL (drk.xfz path-info) b d rjyntrcnt cthdthf (httpd.conf ) b d rjyntrcnt rfnfkjuf (.htaccess ) b lf;t vj;tn utythbhjdfnm xfcnb cnhjrb pfghjcf d rfxtcndt htpekmnfnf. Ïhtj,hfpjdfyysq htpekmnfn vj;tn ghbdjlbnm r dyenhtyytq j,hf,jnrt, dytiytve gthtyfghfdktyb. pfghjcf bkb lf;t r ghj[j;ltyb. xthtp dyenhtyybq ghjrcb vjlekm.
Íj, dcz 'nf aeyrwbjyfkmyjcnm b ub,rjcnm bvttn cdjq ytljcnfnjr — ckj;yjcnm. Ïj'njve, yt levfqnt xnj ds gjqvtnt hf,jne vjlekz pf jlby ltym.
Ýnjn vjlekm ,sk ghblevfy b yfgbcfy d fghtkt 1996 b 'rcrk.pbdyj gjlfhty The Apache Group d b.kt 1997
Ralf S. Engelschall
rse@engelschall.com
www.engelschall.com
Äbhtrnbds
- RewriteBase
- RewriteCond
- RewriteEngine
- RewriteLock
- RewriteLog
- RewriteLogLevel
- RewriteMap
- RewriteOptions
- RewriteRule
Òtvs
- Âyenhtyybt ghjwtccs
- Ïthtvtyyst jrhe;tybz
- Ïhfrnbxtcrbt htitybz
Âyenhtyybt ghjwtccs
Âyenhtyybt ghjwtccs d 'njv vjlekt jxtym ckj;ys, jlyfrj, b[ ye;yj j,]zcybnm [jnz ,s hfp, b lf;t j,sxyjve gjkmpjdfntk., dj bp,t;fybt hfcghjcnhfy¸yys[ jib,jr b hfcrhsnbz dctq tuj aeyrwbjyfkmyjcnb. Ôfps API
Äkz yfxfkf, ye;yj ghjcnj gjyznm, xnj j,hf,jnre rfrjuj-kb,j HTTP pfghjcf, cthdth Apache ltkftn d afpf[. Ïtht[dfnxbr 'nb[ afp j,tcgtxbdftncz Apache API. Mod_rewrite bcgjkmpetn 2 bp 'nb[ gtht[dfnxbrjd: nhfyckznjh bp URL d bvz afqkf bcgjkmpetvsq gjckt cxbnsdfybz HTTP pfghjcf, yj lj yfxfkf rfrjq-kb,j fdnjhbpfwbb b gtht[dfnxbr flhtcyjq ghbdzprb yfxbyf.obq hf,jnfnm gjckt afp fdnjhbpfwbb b cxbnsdfybz rjyabuehfwbjyys[ afqkjd rfnfkjuf (.htaccess ), yj lj frnbdbpfwbb j,hf,jnxbrf cjlth;fybz.
Ïj'njve, gjckt gjcnegktybz pfghjcf b jghtltktybz Apache'tv cjjndtncnde.otuj cthdthf (bkb dbhnefkmyjuj cthdthf) vt[fybpv ghtj,hfpjdfybq yfxbyftn j,hf,jnre dct[ lbhtrnbd mod_rewrite bp rjyabuehfwbjyyjuj afqkf cthdthf d afpt nhfyckzwbb bp URL d bvz afqkf. Ítcrjkmrj ifujd cgecnz, rjulf yf[jlzncz rfnfkjub c rjytxysvb lfyysvb, rjyabuehfwbjyyst lbhtrnbds mod_rewrite pfgecrf.ncz d afpt flhtcyjq ghbdzprb. Â j,jb[ 'nb[ cbnefwbz[ mod_rewrite ghtj,hfpetn URL, kb,j d yjdst URL, kb,j d bvtyf afqkjd, [jnz vt;le ybvb ytn j,]trnbdys[ hfpkbxbq. Ïhb cjplfybb API, yt ghtlgjkfufkjcm tuj bcgjkmpjdfybt nfrbv j,hfpjv, jlyfrj xnj rfcftncz Apache 1.x 'nj tlbycndtyysq djpvj;ysq cgjcj, hf,jns mod_rewrite. ×nj,s dytcnb ,jkmit zcyjcnb pfgjvybnt 2 dtob:
- Õjnz mod_rewrite b ghtj,hfpetn URL d URL, URL d bvtyf afqkjd b lf;t bvtyf afqkjd d bvtyf afqkjd, d yfcnjzobq vjvtyn API ghtljcnfdkztn njkmrj gtht[dfnxbr lkz ghtj,hfpjdfybz URL d bvz afqkf. Âj 2-v Apache ,elen lj,fdktys 2 jncencnde.ob[ gtht[dfnxbrf lkz njuj, xnj,s cltkfnm 'njn ghjwtcc ,jktt kjubxysv. Îlyfrj 'nj ybrfr yt dkbztn yf gjkmpjdfntkz, — ghjcnj 'njn afrn yflj pfgjvybnm: Apache d gtht[dfnxbrt URL bvz afqkf ltkftn ,jkmit yt;tkb xtv 'nj gjlhfpevtdftncz d API.
- Átcgjlj,ysq mod_rewrite ghjltksdftn URL ghtj,hfpjdfybz b d rjyntrcnt rfnfkjuf, n.t. d afqkf[
.htaccess , [jnz jyb b j,hf,fnsdf.ncz yfvyjuj gjp;t nhfyckzwbb URL d bvtyf afqkjd. Òfr ljk;yj ,snm, gjnjve xnj .htaccess afqks yf[jlzncz d afqkjdjq cbcntvt, b gj'njve j,hf,jnrf e;t ljikf lj 'njq cnflbb. Äheubvb ckjdfvb: Ñjukfcyj afpfv API, — d 'nj dhtvz e;t ckbirjv gjplyj eghfdkznm URL. ×nj,s htibnm ghj,ktve rehbws b zqwf, mod_rewrite bcgjkmpetn [bnhjcnm: rjulf ds vfybgekbhetnt URL/bvtytv afqkf d rjyntrcnt rfnfkjuf, mod_rewrite cyfxfkf ghtj,hfpetn bvz afqkf j,hfnyj, r cjjndtncnde.otve tve URL (xnj j,sxyj ytdjpvj;yj, jlyfrj, cvjnhbnt lbhtrnbde RewriteBase xenm yb;t, ult yfgbcfyj rfr 'nj cltkfnm) b pfntv bybwbbhetn yjdsq dyenhtyybq gjlpfghjc c 'nbv yjdsv URL. Ýnj gthtpfgecrftn ghjwtcc j,hf,jnrb afp API.
È cyjdf mod_rewrite egjhyj gsnftncz cltkfnm 'njn ckj;ysq ifu gjkyjcnm. ghjphfxysv lkz gjkmpjdfntkz, jlyfrj pltcm dfv cktletn pfgjvybnm: d nj dhtvz rfr vfybgekzwbb c URL rjyntrcnt cthdthf ltqcndbntkmyj ,scnhs b 'aatrnbdys, vfybgekzwbb d rjyntrcnt rfnfkjuf vtlktyys b yt'aatrnbdys bp-pf ghj,ktvs rehbws b zqwf. Îlyfrj, c lheujq cnjhjys 'nj tlbycndtyysq djpvj;ysq genm hf,jns mod_rewrite (kjrfkmyj juhfybxtyysq) lkz URL ghtj,hfpjdfybq, ljcnegysq j,sxyjve gjkmpjdfntk..
Ít pf,sdfqnt 2 'nb dtob! Î,hf,jnrf yf,jhjd ghfdbk
Çfgecrfzcm d 'nb[ lde[ afpf[ API, mod_rewrite cxbnsdftn rjyabuehfwbjyyst yf,jhs ghfdbk bp cdjtq rjyabuehfwbjyyjq cnhernehs (cjplfdftvjq kb,j jlby hfp ghb pfgecrt cthdthf, — lkz rjyntrcnf cthdthf, kb,j rf;lsq hfp ghb j,[jlt zlhjv Apache rfnfkjujd, — lkz rjyntrcnf rfnfkjuf). Çfntv pfgecrftncz vt[fybpv URL ghtj,hfpjdfybq c e;t bvt.obvcz yf,jhjv ghfdbk (ghfdbkj(f) dvtcnt cj cdjbvb eckjdbzvb). Ôeyrwbjybhjdfybt cfvjuj vt[fybpvf ghtj,hfpjdfybq d njxyjcnb jlbyfrjdj lkz j,jb[ rjyntrcnjd rjyabuehfwbb. Ðfpkbxf.ncz njkmrj rjytxyst htpekmns j,hf,jnrb.
Ïjhzljr ghfdbk d yf,jht df;ty gjnjve xnj vt[fybpv ghtj,hfpjdfybq j,hf,fnsdftn b[ d cgtwbfkmyjv (b yt jxtym jxtdblyjv) gjhzlrt. Âjn 'nj ghfdbkj: Ìt[fybpv ghtj,hfpjdfybq ghjcvfnhbdftn dtcm yf,jh ghfdbk cnhjxrf pf cnhjxrjq (RewriteRule lbhtrnbds) b rjulf yf[jlbncz cjjndtncndbt rjyrhtnyjve ghfdbke ghjbpdjlbncz ghjcvjnh cjjndtncnde.ob[ 'njve ghfdbke eckjdbq (RewriteCond lbhtrnbds). Ïj bcnjhbxtcrbv ghbxbyfv eckjdbz yf[jlzncz gthtl ghfdbkfvb, b gj'njve gjcktljdfntkmyjcnm dsgjkytybz rjvfyl ytvyjuj ,jktt lkbyyfz. Ñv. hbc. 1 lkz ,jktt gjlhj,yjq byajhvfwbb.
Ðbceyjr 1:Ïjcktljdfntkmyjcnm dsgjkytybz rjvfl ghb j,hf,jnrt yf,jhf ghfdbk
Êfr ds vj;tnt dbltnm, cyfxfkf URL chfdybdftncz c Øf,kjy lkz rf;ljuj bp ghfdbk. Ïhb ytelfxt mod_rewrite chfpe ;t jcnfyfdkbdftn j,hf,jnre 'njuj ghfdbkf b ghjljk;ftn hf,jne, bcgjkmpez cktle.ott ghfdbkj. Åckb Øf,kjy cjdgflftn, mod_rewrite botn cjjndtncnde.obt 'njve ghfdbke eckjdbz. Åckb b[ ytn, jy ghjcnj pfvtyztn URL yjdjq dtkbxbyjq gjkextyyjq bp cnhjrb Ïjlcnfyjdrf b ghjljk;ftn lfkmit j,hf,fnsdfnm ghfdbkf. Îlyfrj tckb ceotcnde.n eckjdbz, pfgecrftncz dyenhtyybq wbrk lkz b[ j,hf,jnrb d njv gjhzlrt d rjnjhjv jyb gthtxbcktys. Äkz eckjdbq 'nf kjubrf lheufz: vs yt chfdybdftv URL yf cjjndtncndbt rfrjve-kb,j if,kjye. Âvtcnj 'njuj vs cyfxfkf cjplftv cnhjre ÑhfdybdftvfzÑnhjrf ljgjkyzz t¸ gthtvtyysvb, j,hfnysvb ccskrfvb, pfghjcfvb d ,fps lfyys[, b n.l. b pfntv gsnftvcz ghjdthznm yf cjjndtncndbt c Óckjdbt. Åckb if,kjy yt cjjndtncndetn, dtcm yf,jh eckjdbq b cjjndtncnde.ob[ ghfdbk cxbnftncz ytcjjndtncnde.obv eckjdb.. Åckb tcnm cjjndtncndbt if,kjye, d 'njv ckexft ghjbpdjlbncz j,hf,jnrf cktle.otuj eckjdbz lj nt[ gjh gjrf jyb ,elen yt bcxthgfys. Åckb dct eckjdbz cjdgflf.n, ghjwtcc j,hf,jnrb ghjljk;ftncz c bcgjkmpjdfybtv lkz URL gjlcnfyjdrb lfyys[ bp gjkz Ïjlcnfyjdrf. Ýrhfybhjdfybt cgtwbfkmys[ cbvdjkjd
×nj rfcftncz Apache 1.3.20, cgtwbfkmyst cbvdjks d ÑhfdybdftvfzÑnhjrf b Ïjlcnfyjdrf cnhjrf[ vjuen ,snm 'rhfybhjdfys (bvttncz ddble, jnyjitybt r ybv rfr r yjhvfkmysv cbvdjkfv ,tp b[ j,sxyjuj cgtwbfkmyjuj pyfxtybz) gentv ghtlitcnde.otuj bv cbvdjkf cktif (''). Äheubvb ckjdfvb, ds vj;tnt drk.xfnm cbvdjk ljkkfhf d cnhjre Ïjlcnfyjdrf bcgjkmpez '$ '; 'nj yt gjpdjkbn mod_rewrite jnyjcbnmcz r ytve rfr r j,hfnyjq ccskrt. Ífkbxbt j,hfnys[ cdzptq d htuekzhys[ dshf;tybz[
Çltcm ye;yj pfgjvybnm jlye df;ye. dtom: Âczrbq hfp, rjulf ds bcgjkmpetnt rheukst crj,rb d Øf,kjy bkb d jlyjv bp Óckjdbt, cjplf.ncz dyenhtyybt j,hfnyst cdzpb rjnjhst vjuen ,snm bcgjkmpjdfys cj cnhjrfvb $N b %N (cv. yb;t). Îyb gjktpys ghb cjplfybb cnhjr Ïjlcnfyjdrf b ÑhfdybdftvfzÑnhjrf. Ðbceyjr 2 gjrfpsdftn d rfrbt vtcnf ghb ljgjkytybb (cnhjr Ïjlcnfyjdrf b ÑhfdybdftvfzÑnhjrf) gthtvtof.ncz j,hfnyst cdzpb.
Ðbceyjr 2: Ädb;tybt j,hfnys[ cdzptq d ghfdbkt.
Ènfr, — 'nj ,sk ytgjl]¸vysq rehc gj dyenhtyybv vt[fybpvfv mod_rewrite, yj jy dfv cbkmyj gjvj;tn ghb lfkmytqitv xntybb ljrevtynfwbb gj lfyyjve vjlek..
Ïthtvtyyst jrhe;tybz
Ýnjn vjlekm jnckt;bdftn ldt ljgjkybntkmyst (ytcnfylfhnyst) gthtvtyyst jrhe;tybz CGI/SSI yfpsdftvst SCRIPT_URL b SCRIPT_URI . Îyb cjlth;fn kjubxtcrjt ghtlcnfdktybt ntreotuj htcehcf, n.t. nj, rfrbv ds dblbnt 'nj d flhtcyjq cnhjrt ,hfepthf, d nj dhtvz rfr cnfylfhnyst gthtvtyyst CGI/SSI SCRIPT_NAME b SCRIPT_FILENAME cjlth;fn abpbxtcrjt bkb cbcntvyjt ghtlcnfdktybt.
Çfvtxfybt: 'nb gthtvtyyst cjlth;fn URI/ URL d njv dblt, d rjnjhjv jyb ,skb gthdjyfxfkmyj pfghjitys, n.t., gthtl ntv rfr ,skb cltkfyst rfrbt-kb,j ghtj,hfpjdfybz. Ýnj df;yj, b,j ghjwtcc ghtj,hfpjdfybz d gthde. jxthtlm bcgjkmpetncz lkz ghtj,hfpjdfybz kjubxtcrb[ URL d abpbxtcrbt genb r rjyrhtnysv afqkfv.
Ïhbvth SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.html SCRIPT_FILENAME=/u/rse/.www/index.html SCRIPT_URL=/u/rse/ SCRIPT_URI=http://en1.engelschall.com/u/rse/
Ïhfrnbxtcrbt htitybz
Èvttncz b Ðerjdjlcndj gj ghtj,hfpjdfybzv URL, cjlth;fott rjkktrwb. ghfrnbxtcrb[ htitybq ghj,ktv URL ghtj,hfpjdfybq. Òfv vj;yj yfqnb yf,jhs ghfdbk dpznst bp htfkmyjq ;bpyb b ljgjkybntkmye. byajhvfwb. j mod_rewrite.
RewriteBase Äbhtrnbdf
Îgbcfybt: |
Ócnfyfdkbdftn ,fpjdsq URL lkz ghtj,hfpjdfybq d rjyntrcnt rfnfkjuf |
Ñbynfrcbc: |
RewriteBase URL-path |
Çyfxtybt gj evjkxfyb.: |
Ñvjnhb bcgjkmpjdfybt lkz ,jktt gjlhj,yjq byajhvfwbb. |
Êjyntrcn: |
directory.htaccess |
Ðfphtitybt: |
FileInfo |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteBase ecnfyfdkbdftn rjyrhtnysq, ,fpjdsq URL lkz ghtj,hfpjdfybq d rjyntrcnt rfnfkjuf. Êfr ds edblbnt yb;t, RewriteRule vj;tn ,snm bcgjkmpjdfyj d rjyabuehfwbjyys[ afqkf[ rfnfkjujd (.htaccess ). Ýnj ,eltn hf,jnfnm kjrfkmyj, n.t., ghtabrc kjrfkmyjuj rfnfkjuf jn,hfcsdftncz yf 'njv 'nfgt j,hf,jnrb b dfib ghfdbkf ghtj,hfpjdfybq hf,jnf.n njkmrj d jcnfditqcz xfcnb. Â rjywt jy fdnjvfnbxtcrb lj,fdkztncz j,hfnyj r genb. Ífcnhjqrf gj-evjkxfyb.; RewriteBase physical-directory-path
Êjulf, lkz rfrjuj-yb,elm yjdjuj URL ghjbc[jlbn gjlcnfyjdrf(ghtj,hfpjdfybt), 'njn vjlekm ljk;ty pfyjdj djdktxm 'njn URL d j,hf,jnre. Äkz njuj xnj,s bvtnm djpvj;yjcnm cltkfnm 'nj, ye;yj pyfnm rfrbt e ytuj ghtabrc bkb ,fpf URL. Ïj-evjkxfyb. 'njn ghtabrc hfdty cfvjve genb. Îlyfrj yf ,jkmibycndt cfqnjd URL's ÍÅ ghzvj cjjndtncnde.n abpbxtcrbv genzv, gj'njve 'nj ljgeotybt j,sxyj jrf;tncz ytdthysv! Â 'njv ckexft ds ljk;ys bcgjkmpjdfnm lbhtrnbde RewriteBase lkz erfpfybz ghfdbkmyjuj ghtabrcf URL.
Åckb URL dfituj cthdthf yt cjjndtncnde.n abpbxtcrbv genzv r afqkfv, ds ljk;ys bcgjkmpjdfnm RewriteBase d rf;ljv bp .htaccess afqkjd ult ds [jnbnt bcgjkmpjdfnm lbhtrnbds RewriteRule .
Ífghbvth, ghtlgjkj;bv cktle.obq rjyabuehfwbjyysq afqk rfnfkjuf:
# # /abc/def/.htaccess -- rjyabuehfwbjyysq afqk rfnfkjuf /abc/def # Ïjvybnt: /abc/def 'nj abpbxtcrbq genm /xyz, n.t., e cthdthf tcnm # lbhtrnbdf 'Alias /xyz /abc/def' r ghbvthe # RewriteEngine On # lftv cthdthe pyfnm xnj vs hf,jnftv xthtp /xyz f yt # xthtp ghtabrc abpbxtcrjuj genb /abc/def RewriteBase /xyz # ntgthm ghfdbkf ghtj,hfpjdfybq RewriteRule ^oldstuff.html$ newstuff.html
 ghbvtht dsit, pfghjc r /xyz/oldstuff.html rjhhtrnyj ghtj,hfpetncz d abpbxtcrbq afqk /abc/def/newstuff.html .
Äkz k.,bntktq gjrjdshznmcz d Apache
Ñktle.obq cgbcjr lftn gjlhj,ye. byajhvfwb. j, 'nfgf[ dyenhtyytq hf,jns: Çfghjc: /xyz/oldstuff.html Âyenhtyyzz hf,jnf: /xyz/oldstuff.html -> /abc/def/oldstuff.html (per-server Alias) /abc/def/oldstuff.html -> /abc/def/newstuff.html (per-dir RewriteRule) /abc/def/newstuff.html -> /xyz/newstuff.html (per-dir RewriteBase) /xyz/newstuff.html -> /abc/def/newstuff.html (per-server Alias) Ðtpekmnfn: /abc/def/newstuff.html
Ýnj rf;tncz jxtym ckj;ysv jlyfrj 'nj rjhhtrnyfz dyenhtyyzz hf,jnf Apache, bp-pf njuj xnj ghtj,hfpjdfybz d rjyntrcnt rfnfkjuf ghjbc[jlzn ckbirjv gjplyj d 'njv ghjwtcct. Ïj'njve, rjulf 'nj ghjbc[jlbn (ghtj,hfpjdfybt), pfghjc ljk;ty ,snm djpdhfoty j,hfnyj zlhe Apache! ÍÎ: Â nj dhtvz rfr 'nj rf;tncz cth]¸pysv yfrkflysv hfc[jljv, d ltqcndbntkmyjcnb 'nj yt nfr, gjnjve xnj 'njn djpdhfn ghjbc[jlbn wtkbrjv dyenhb cthdthf Apache b nf ;t cfvfz ghjwtlehf bcgjkmpetncz vyjubvb lheubvb jgthfwbzvb dyenhb Apache. Ïj'njve, ds vj;tnt ,snm edthtys xnj lbpfqy b htfkbpfwbz ghfdbkmyst.
RewriteCond Äbhtrnbdf
Îgbcfybt: |
Îghtltkztn eckjdbt ghb rjnjhjv ghjbc[jlbn ghtj,hfpjdfybt |
Ñbynfrcbc: |
RewriteCond ÑhfdybdftvfzÑnhjrfÓckjdbt |
Çyfxtybt gj evjkxfyb.: |
None |
Êjyntrcn: |
server configvirtual hostdirectory.htaccess |
Ðfphtitybt: |
FileInfo |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteCond jghtltkztn eckjdbz lkz rfrjuj-kb,j ghfdbkf. Ïthtl lbhtrnbdjq RewriteRule hfcgjkfuf.ncz jlyf bkb ytcrjkmrj lbhtrnbd RewriteCond . Ñktle.ott pf ybvb ghfdbkj ghtj,hfpjdfybz bcgjkmpetncz njkmrj njulf, rjulf URI cjjndtncndetn eckjdbzv 'njq lbhtrnbds b nfr;t eckjdbzv 'nb[ ljgjkbntkmys[ lbhtrnbd.
ÑhfdybdftvfzÑnhjrf cnhjrf rjnjhfz vj;tn cjlth;fnm cktle.obt ljgjkybntkmyst rjycnherwbb d ljgjktybb r ghjcnjve ntrcne:
- RewriteRule j,hfnyst_cdzpb: Ýnj j,hfnyst cdzpb dblf
$N (0 <= N <= 9) ghtljcnfdkz.obt ljcneg r cuheggbhjdfyysv xfcnzv (d rheuks[ crj,rf[!) if,kjyf bp cjjndtncnde.otq lbhtrnbds RewriteRule (tlbycndtyyjq, cktle.otq chfpe pf ntreobv yf,jhjv lbhtrnbd RewriteCond ).
- RewriteCond j,hfnyst_cdzpb: Ýnj j,hfnyst cdzpb dblf
%N (1 <= N <= 9) ghtljcnfdkz.obt ljcneg r cuheggbhjdfyysv xfcnzv (d rheuks[ crj,rf[!) if,kjyf bp cjjndtncnde.otq lbhtrnbds RewriteCond d ntreotv yf,jht eckjdbq.
- RewriteMap hfcibhtybz: Ýnj hfcibhtybz dblf
${mapname:key|default} Ñvjnhbnt ljrevtynfwb. gj RewriteMap lkz gjkextybz ,jktt gjlhj,yjq byajhvfwbb.
- Ïthtvtyyst cthdthf: Ýnj gthtvtyyst dblf
%{ NAME_OF_VARIABLE} ult NAME_OF_VARIABLE vj;tn ,snm cnhjrjq dpznjq bp cktle.otuj cgbcrf:
HTTP pfujkjdrb: |
cjtlbytybt & pfghjc: |
|
HTTP_USER_AGENT HTTP_REFERER HTTP_COOKIE HTTP_FORWARDED HTTP_HOST HTTP_PROXY_CONNECTION HTTP_ACCEPT
|
REMOTE_ADDR REMOTE_HOST REMOTE_USER REMOTE_IDENT REQUEST_METHOD SCRIPT_FILENAME PATH_INFO QUERY_STRING AUTH_TYPE
|
|
dyenhtyybt cthdthf: |
cbcntvyst: |
cgtwbfkmyst: |
DOCUMENT_ROOT SERVER_ADMIN SERVER_NAME SERVER_ADDR SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE
|
TIME_YEAR TIME_MON TIME_DAY TIME_HOUR TIME_MIN TIME_SEC TIME_WDAY TIME
|
API_VERSION THE_REQUEST REQUEST_ URI REQUEST_FILENAME IS_SUBREQ
|
Ýnb gthtvtyyst gjkyjcnm. cjjndtncnde.n yfpdfyysv gj[j;bv j,hfpjv MIME-pfujkjdrfv HTTP , Ñb gthtvtyysv cthdthf Apache bkb gjkzv struct tm cbcntv Unix. Ájkmibycndj bp yb[ ljrevtynhjdfyys d lheub[ vtcnf[ herjdjlcndf bkb d cgtwbabrfwbb CGI. Òt, xnj zdkz.ncz lkz mod_rewrite cgtwbfkmysvb drk.xf.n:
IS_SUBREQ
- Áeltn cjlth;fnm ntrcn «true» tckb pfghjc dsgjkyztncz d ntreobq vjvtyn rfr gjlpfghjc, «false» d lheujv ckexft. Ïjlpfghjcs vjuen ,snm cutythbhjdfyys vjlekzvb rjnjhsv ye;yj bvtnm ltkj c ljgjkybntkmysvb afqkfvb bkb URI lkz njuj xnj,s dsgjkybnm cj,cndtyyst pflfxb.
API_VERSION
- Ýnj dthcbz API vjlekz Apache (dyenhtyybq bynthatqc vt;le cthdthjv b vjlektv) d ntreotq c,jhrt cthdthf, xnj jghtltktyj d include/ap_mmn.h. API dthcbz vjlekz cjjndtncndetn bcgjkmpetvjq dthcbb Apache (lkz dthcbb Apache 1.3.14, r ghbvthe 'nj 19990320:10), jlyfrj 'nj d jcyjdyjv bynthtcyj fdnjhfv vjlektq.
THE_REQUEST
- Ïjkyfz cnhjrf HTTP pfghjcf jnghfdktyyfz ,hfepthjv cthdthe (n.t., «
GET /index.html HTTP/1.1 »). Îyf yt drk.xftn rfrbt-kb,j ljgjkybntkmyst pfujkjdrb jnghfdkztvst ,hfepthjv.
REQUEST_URI
- Ðtcehc, pfghjityysq d cnhjrt HTTP pfghjcf. (Â ghbvtht dsit, 'nj ,skj ,s «/index.html».)
REQUEST_FILENAME
- Ïjkysq genm d afqkjdjq cbcntvt cthdthf r afqke bkb crhbgne cjjndtncnde.obv 'njve pfghjce.
Ñgtwbfkmyst ghbvtxfybz:
- Ïthtvtyyst SCRIPT_FILENAME b REQUEST_FILENAME cjlth;fn jlbyfrjdst pyfxtybz, n.t., pyfxtybt gjkz
filename dyenhtyytq cnhernehs request_rec cthdthf Apache. Ïthdjt bvz 'nj ghjcnj ibhjrj bpdtcnyjt bvz gthtvtyyjq CGI d nj dhtvz rfr dnjhjt 'nj gjcnjzyyfz rjgbz REQUEST_ URI (cjlth;fofz pyfxtybt gjkz uri cnhernehs request_rec ).
- Åcnm cgtwbfkmysq ajhvfn:
%{ENV:gthtvtyyfz} ult gthtvtyyfz vj;tn ,snm k.,jq gthtvtyyjq jrhe;tybz. Ýnj botncz dj dyenhtyyb[ cnhernehf[ Apache b (tckb nfv ytn) c gjvjom. dspjdf getenv() bp ghjwtccf Apache cthdthf.
- Åcnm cgtwbfkmysq ajhvfn:
%{HTTP:pfujkjdjr} ult pfujkjdjr vj;tn ,snm k.,sv bvtytv HTTP MIME-pfujkjdrf. Ýnj botncz d HTTP pfghjct. Ïhbvth: %{HTTP:Proxy-Connection} pyfxtybt HTTP pfujkjdrf «Proxy-Connection: ».
- Åcnm cgtwbfkmysq ajhvfn
%{LA-U:gthtvtyyfz} jgtht;f.ob[ pfghjcjd rjnjhst ghjbpdjlzncz dyenhtyybv (jcyjdfyyjv yf URL) gjlpfghjcjv lkz jghtltktybz rjytxyjuj pyfxtybz gthtvtyyjq. Ècgjkmpeqnt 'nj rjulf ds [jnbnt bcgjkmpjdfnm gthtvtyye. lkz ghtj,hfpjdfybq, rjnjhfz htfkmyj jghtltkztncz gjplytt, d rfrjq-kb,j afpt API, b nfrbv j,hfpjv ytljcnegyf yf lfyyjv 'nfgt. Äkz ghbvthf rjulf ds [jnbnt ghtj,hfpjdfnm cjjndtncndtyyj gthtvtyyjq REMOTE_USER bp rjyntrcnf cthdthf (afqk httpd.conf ) ds ljk;ys bcgjkmpjdfnm %{LA-U:REMOTE_USER} gjnjve xnj 'nf gthtvtyyfz ecnfyfdkbdftncz d afpf[ fdnjhbpfwbb rjnjhst blen gjckt afps nhfyckzwbb URL d rjnjhjq b hf,jnftn mod_rewrite. Ñ lheujq cnjhjys, gj ghbxbyt htfkbpfwbb hf,jns mod_rewrite d rjyntrcnt rfnfkjuf (afqk .htaccess ) xthtp Fixup afpe API b bp-pf njuj, afps fdnjhbpfwbb blen lj 'njq afps, ds ghjcnj vj;tnt nfv bcgjkmpjdfnm %{REMOTE_USER} .
- Åcnm cgtwbfkmysq ajhvfn:
%{LA-F:gthtvtyyfz} rjnjhsq cjplftn dyenhtyybq (jcyjdfyysq yf bvtyb afqkf) gjlpfghjc lkz jghtltktybz rjytxyjuj pyfxtybz gthtvtyyjq. Â jcyjdyjv 'nj nj ;t cfvjt xnj b ajhvfn LA-U ghbdtltyysq dsit.
Óckjdbt 'nj if,kjy eckjdbz, n.t., rfrjt-kb,j htuekzhyjt dshf;tybt ghbvtyztvjt r ntreotve 'rptvgkzhe ÑhfdybdftvfzÑnhjrf, n.t., ÑhfdybdftvfzÑnhjrf ghjcvfnhbdftncz yf gjbcr cjjndtncndbz Óckjdbt.
Ïjvybnt: Óckjdbt 'nj perl cjdvtcnbvjt htuekzhyjt dshf;tybt c ytrjnjhsvb ljgjkytybzvb:
- Âs vj;tnt ghtldfhznm cnhjre if,kjyf ghtabrcjv '
! ' (djcrkbwfntkmysq pyfr) lkz erfpfybz ytcjjndtncndbz if,kjye.
- Åcnm ytrjnjhst cgtwbfkmyst dfhbfyns Óckjdbts. Âvtcnj j,sxys[ cnhjr c htuekzhysvb dshf;tybzvb vj;yj nfr;t bcgjkmpjdfnm jlby bp cktle.ob[ dfhbfynjd:
- '<Óckjdbt' (ktrcbxtcrb vtymit)
Óckjdbt cxbnftncz ghjcnjq cnhjrjq b ktrcbxtcrb chfdybdftncz c ÑhfdybdftvfzÑnhjrf. Ècnbyyj tckb ÑhfdybdftvfzÑnhjrf ktrcbxtcrb vtymit xtv Óckjdbt.
- '>Óckjdbt' (ktrcbxtcrb ,jkmit)
Óckjdbt cxbnftncz ghjcnjq cnhjrjq b ktrcbxtcrb chfdybdftncz c ÑhfdybdftvfzÑnhjrf. Ècnbyyj tckb ÑhfdybdftvfzÑnhjrf ktrcbxtcrb ,jkmit xtv Óckjdbt.
- '=Óckjdbt' (ktrcbxtcrb hfdyj)
Óckjdbt cxbnftncz ghjcnjq cnhjrjq b ktrcbxtcrb chfdybdftncz c ÑhfdybdftvfzÑnhjrf. Ècnbyyj tckb ÑhfdybdftvfzÑnhjrf ktrcbxtcrb hfdyj Óckjdbt, n.t. 'nb ldt cnhjrb gjkyjcnm. jlbyfrjds (cbvdjk d cbvdjk). Åckb Óckjdbt bvttn dbl "" (ldf pyfrf l.qvf bleob[ gjlhzl) 'nj chfdybdftn ÑhfdybdftvfzÑnhjrf c gecnjq cnhjrjq.
- '-d' (zdkztncz kb rfnfkjujv)
ÑhfdybdftvfzÑnhjrf cxbnftncz gentv, ghjdthztncz ceotcndjdfybt 'njuj genb b nj xnj 'njn genm zdkztncz rfnfkjujv.
- '-f' (zdkztncz kb j,sxysv afqkjv)
ÑhfdybdftvfzÑnhjrf cxbnftncz gentv, ghjdthztncz ceotcndjdfybt 'njuj genb b nj xnj 'njn genm zdkztncz j,sxysv afqkjv.
- '-s' (zdkztncz kb j,sxysv afqkjv c ytyektdsv hfpvthjv)
ÑhfdybdftvfzÑnhjrf cxbnftncz gentv, ghjdthztncz ceotcndjdfybt 'njuj genb b nj xnj 'njn genm zdkztncz j,sxysv afqkjv, hfpvth rjnjhjuj ,jkmit yekz.
- '-l' (zdkztncz kb cbvdjkbxtcrjq ccskrjq)
ÑhfdybdftvfzÑnhjrf cxbnftncz gentv, ghjdthztncz ceotcndjdfybt 'njuj genb b nj xnj 'njn genm zdkztncz cbvdjkbxtcrjq ccskrjq.
- '-F' (ghjdthrf ceotcndjdfybz afqkf xthtp gjlpfghjc)
Ïhjdthztn xthtp dct cgbcrb rjynhjkz ljcnegf cthdthf, ceotcnde.obt d yfcnjzobq vjvtyn, zdkztncz kb ÑhfdybdftvfzÑnhjrf ceotcnde.obv afqkjv, ljcnegysv gj 'njve genb. Äkz 'njq ghjdthrb bcgjkmpetncz dyenhtyybq gjlpfghjc, gj'njve bcgjkmpeqnt 'ne jgwb. c jcnjhj;yjcnm. — 'nj jnhbwfntkmyj crfpsdftncz yf ghjbpdjlbntkmyjcnb cthdthf!
- '-U' (ghjdthrf ceotcndjdfybz URL xthtp gjlpfghjc)
Ïhjdthztn xthtp dct cgbcrb rjynhjkz ljcnegf cthdthf, ceotcnde.obt d yfcnjzobq vjvtyn, zdkztncz kb ÑhfdybdftvfzÑnhjrf ceotcnde.obv URL, ljcnegysv gj 'njve genb. Äkz 'njq ghjdthrb bcgjkmpetncz dyenhtyybq gjlpfghjc, gj'njve bcgjkmpeqnt 'ne jgwb. c jcnjhj;yjcnm. — 'nj jnhbwfntkmyj crfpsdftncz yf ghjbpdjlbntkmyjcnb cthdthf!
ÇfvtxfybtÂct 'nb ghjdthrb nfr;t vjuen ,snm ghtldfhtys ghtabrcjv djcrkbwfntkmysq pyfr ('!') lkz bydthnbhjdfybz b[ pyfxtybz.
Äjgjkybntkmyj ds vj;tnt ecnfyfdkbdfnm cgtwbfkmyst akfub lkz Óckjdbt lj,fdkzz
[ flags]
nhtnmbv fhuevtynjv d lbhtrnbde RewriteCond . Flags cgbcjr cktle.ob[ akfujd hfpltktyys[ pfgznsvb:
- '
nocase|NC ' (htubcnhjytpfdbcbvj) Ðtubcnh yt bvttn pyfxtybt, n.t., ytn hfpkbxbq vt;le 'A-Z' b 'a-z' rfr d ljgjkytybb ÑhfdybdftvfzÑnhjrf nfr b Óckjdbt. Ýnjn akfu 'aatrnbdty njkmrj lkz chfdytybq vt;le ÑhfdybdftvfzÑnhjrf b Óckjdbt. Îy yt hf,jnftn ghb ghjdthrf[ d afqkjdjq cbcntvt b d gjlpfghjcf[.
- '
ornext|OR ' (kb,j cktle.ott eckjdbt) Ècgjkmpeqnt lkz rjv,bybhjdfybz eckjdbq d ghfdbkf[ OR dvtcnj AND. Òbgbxysq ghbvth:
RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ...some special stuff for any of these hosts... Átp 'njuj akfuf ds ljk;ys ,skb ,s yfgbcfnm 'nj eckjdbt/ghfdbkj nhb hfpf.
Ïhbvth:
Äkz dslfxb ukfdyjq cnhfybws rfrjuj-kb,j cfqnf cjukfcyj «User-Agent: » pfujkjdre pfghjcf, ds vj;tnt bcgjkmpjdfnm cktle.obt lbhtrnbds:
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^/$ /homepage.max.html [L] RewriteCond %{HTTP_USER_AGENT} ^Lynx.* RewriteRule ^/$ /homepage.min.html [L] RewriteRule ^/$ /homepage.std.html [L]
Èynthghtnfwbz: Åckb e dfc Netscape Navigator (rjnjhsq bltynbabwbhetncz rfr 'Mozilla'), ds dslftnt vfrcbvfkmyj yfdjhjxtyye. cnhfybwe, c ahtqvfvb, b n.l. Åckb e dfc Lynx (ntrcnjdsq ,hfepth), ds dslftnt yfbvtytt yfdjhjxtyye. cnhfybwe, ,tp hbceyrjd, nf,kbw b n.l. Åckb k.,jq lheujq ,hfepth, dslftnt cnfylfhnye. cnhfybwe.
RewriteEngine Äbhtrnbdf
Îgbcfybt: |
Ârk.xftn bkb dsrk.xftn hf,jne vt[fybpvf ghtj,hfpjdfybz |
Ñbynfrcbc: |
RewriteEngine on|off |
Çyfxtybt gj evjkxfyb.: |
RewriteEngine off |
Êjyntrcn: |
server configvirtual hostdirectory.htaccess |
Ðfphtitybt: |
FileInfo |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteEngine drk.xftn bkb dsrk.xftn hf,jne vt[fybpvf ghtj,hfpjdfybq. Åckb jyf ecnfyjdktyf d gjkj;tybt off 'njn vjlekm cjdctv yt hf,jnftn. Îy lf;t yt j,yjdkztn gthtvtyyst jrhe;tybz SCRIPT_URx .
Ècgjkmpeqnt 'ne lbhtrnbde lkz dsrk.xtybz 'njuj vjlekz dvtcnj ghjcnjuj pfrjvvtynbhjdfybz lbhtrnbd RewriteRule !
Învtnmnt, xnj gj-evjkxfyb., yfcnhjqrb ghtj,hfpjdfybq yt yfcktle.ncz. Ýnj jpyfxftn xnj ds ljk;ys bvtnm RewriteEngine on lbhtrnbde lkz rf;ljuj dbhnefkmyjuj [jcnf d rjnjhjv ds [jnbnt bcgjkmpjdfnm 'njn vjlekm.
RewriteLock Äbhtrnbdf
Îgbcfybt: |
Ócnfyfdkbdftn bvz afqkf bcgjkmpetvjuj lkz RewriteMap cby[hjybpfwbb |
Ñbynfrcbc: |
RewriteLock file-path |
Çyfxtybt gj evjkxfyb.: |
None |
Êjyntrcn: |
server config |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Ýnf lbhtrnbdf jghtltkztn bvz afqkf cby[hjybpfwbb rjnjhsq ye;ty mod_rewrite lkz cdzpb c RewriteMap ghjuhfvvfvb. Ñltkfqnt 'njn afqk kjrfkmysv (hfpvtotyysv yt yf NFS-cvjynbhjdfyyjv htcehct) rjulf ds [jnbnt bcgjkmpjdfnm ghjuhfvve lkz cjplfybz fccjwbfnbdyjuj vfccbdf ghtj,hfpjdfybq. Ýnj yt zdkztncz j,zpfntkmysv lkz lheub[ nbgjd nfrb[ vfccbdjd.
RewriteLog Äbhtrnbdf
Îgbcfybt: |
Ócnfyfdkbdftn bvz afqkf bcgjkmpetvjt lkz dtltybz ;ehyfkf vt[fybpvf ghtj,hfpjdfybz |
Ñbynfrcbc: |
RewriteLog file-path |
Êjyntrcn: |
server configvirtual host |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteLog ecnfyfdkbdftn bvz afqkf f rjnjhjv cthdth dtltn ;ehyfk k.,s[ ghjbc[jlzob[ ltqcndbq gj ghtj,hfpjdfybzv URL. Åckb 'nj bvz yt yfxbyftncz cj ck'if ('/ ') d 'njv ckexft genm cxbnftncz jn Server Root. Â rjyabuehfwbjyyjv afqkt cthdthf 'nf lbhtrnbdf ljk;yf dcnthxfnmcz njkmrj jlby hfp.
Äkz jnrk.xtybz dtltybz ;ehyfkf ghtj,hfpjdfybq yt htrjvtyletncz ecnfyfdkbdfnm Filename d /dev/null , gjnjve xnj [jnz vt[fybpv ghtj,hfpjdfybq b yt ghjbpdjlbn dsdjl d afqk ;ehyfkf d 'njv ckexft, dyenhb jy dct to¸ dtltn ;ehyfkbpfwb.. Ýnj pfvtlkbn cthdth ,tp rfrb[-kb,j ghtbveotcnd lkz flvbybcnhfnjhf! Äkz jnrk.xtybz dtltybz ;ehyfkf kb,j elfkbnt kb,j pfrjvvtynbheqnt lbhtrnbde RewriteLog kb,j bcgjkmpeqnt RewriteLogLevel 0 !
ÁtpjgfcyjcnmÑvjnhbnt ljrevtyn Apache Security Tips lkz ,jktt gjlhj,yjq byajhvfwbb j njv gjxtve ds vj;tnt ,snm ezpdbvs tckb d rfnfkjub ult [hfyzncz afqks ;ehyfkjd hfphtityf pfgbcm rjve eujlyj rhjvt gjkmpjdfntkz jn bvtyb rjnjhjuj pfgecrftncz cthdth.
Ïhbvth RewriteLog "/usr/local/var/apache/logs/rewrite.log"
RewriteLogLevel Äbhtrnbdf
Îgbcfybt: |
Ócnfyfdkbdftn ehjdtym ltnfkbpfwbb ghb ;ehyfkbpfwbb ltqcndbq vt[fybpvf ghtj,hfpjdfybq |
Ñbynfrcbc: |
RewriteLogLevel Level |
Çyfxtybt gj evjkxfyb.: |
RewriteLogLevel 0 |
Êjyntrcn: |
server configvirtual host |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteLogLevel ecnfyfdkbdftn ehjdtym ltnfkbpfwbb ;ehyfkf vt[fybpvf ghtj,hfpjdfybq. Ïj-evjkxfyb. ehjdtym 0 jpyfxf.obq xnj ;ehyfkbpfwbz yt dtltncz, d nj dhtvz rfr 9 bkb ,jktt jpyfxftn xnj pfgbcsdf.ncz ghfrnbxtcrb dct ltqcndbz.
Äkz jnrk.xtybz ;ehyfkbpfwbb ltqcndbq vt[fybpvf ghtj,hfpjdfybq ghjcnj ecnfyjdbnt ehjdtym yf 0. Ýnj jnrk.xftn dtltybt ;ehyfkf lkz dct[ ltqcndbq gj ghtj,hfpjdfybzv.
Ècgjkmpjdfybt ,jkmib[ pyfxtybq ehjdyz jxtym cbkmyj pfvtlkbn dfi cthdth Apache! Ècgjkmpeqnt ;ehyfk ghtj,hfpjdfybq yf ehjdyt ,jkmitv xtv 2 njkmrj lkz jnkfljxys[ wtktq!
RewriteMap Äbhtrnbdf
Îgbcfybt: |
Îghtltkztn aeyrwb. cjplfybz fccjwbfnbdyjuj vfccbdf lkz gjbcrf gj rk.xe |
Ñbynfrcbc: |
RewriteMap MapNameMapType:MapSource |
Çyfxtybt gj evjkxfyb.: |
ytn |
Êjyntrcn: |
server configvirtual host |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Ñjdvtcnbvjcnm: |
Âs,jh hfpys[ nbgjd dbm ljcnegty d Apache 2.0.41 b ,jktt gjplyb[ dthcbz[ |
Äbhtrnbdf RewriteMap fccjwbfnbdysq vfccbd ghtj,hfpjdfybq, rjnjhsq vj;tn ,snm bcgjkmpjdfy d ghfdbkf[ ghtj,hfpjdfybq b bcgjkmpe.obq cjjndtncnde.obt aeyrwbb lkz dcnfdrb/bpdktxtybz 'ktvtynjd, lkz gjbcrf gj rk.xe cjjndtncnde.ob[ pyfxtybq. Ècnjxybr 'njuj gjbcrf vj;tn bvtnm hfpkbxysq nbg.
MapName 'nj bvz vfccbdf rjnjhjt ,eltn bcgjkmpjdfnmcz lkz gjbcrf cjjndtncnde.otuj pyfxtybz bp vfccbdf d ghfdbkt ghtj,hfpjdfybz xthtp jlby bp cktle.ob[ rjycnhernjhjd:
${ MapName: LookupKey}
${ MapName: LookupKey| DefaultValue}
Êjulf dcnhtxftncz gjlj,yfz rjycnherwbz, ghjbc[jlbn j,hfotybt r vfccbde MapName b gjbcr pyfxtybz cjgjcnfdktyyjuj rk.xe LookupKey. Åckb yfqltyj bcrjvjt pyfxtybt rk.xf, ghjbc[jlbn bpdktxtybt pyfxtybz SubstValue c gjvjom. cjjndtncnde.otq aeyrwbb. Åckb rk.x yt yfqlty njulf ghjbc[jlbn gjlcnfyjdrf DefaultValue bkb gecnjq cnhjrb tckb yt erfpfyf DefaultValue.
Ìjuen ,snm bcgjkmpjdfys cktle.obt rjv,byfwbb nbgf aeyrwbb — MapType lkz dcnfdrb/bpdktxtybz 'ktvtynjd vfccbdf b MapSource — cfvjuj fccjwbfnbdyjuj vfccbdf:
- Ïhjcnjq ntrcn
MapType: txt , MapSource: Ïenm r ceotcnde.otve afqke d afqkjdjq cbcntvt Unix
Ýnj cnfylfhnyfz jgwbz lkz cjplfybz fccjwbfnbdyjuj vfccbdf ult MapSource 'nj ghjcnjq ntrcnjdsq ASCII afqk cjlth;fobq kb,j gecnsq cnhjxrb, cnhjxrb rjvvtynfhbtd (yfxbyf.obtcz c cbvdjkf '#') kb,j gfhs gjlj,yst cktle.obv — jlyf d cnhjxrt:
MatchingKeySubstValue
Ïhbvth ## ## map.txt -- vfccbd ghtj,hfpjdfybq ## Ralf.S.Engelschall rse # Bastard Operator From Hell Mr.Joe.Average joe # Mr. Average
RewriteMap real-to-user txt:/path/to/file/map.txt
- Ïhjbpdjkmysq ghjcnjq ntrcn
MapType: rnd , MapSource: Ïenm r ceotcnde.otve afqke d afqkjdjq cbcntvt Unix
Ýnjn dfhbfyn bltynbxty dfhbfyne c ghjcnsv ntrcnjv ghbdtl¸yyjv dsit yj cj cgtwbfkmyjq jcj,tyyjcnm. gjcn-j,hf,jnrb: Ïjckt yf[j;ltybz rfre.-kb,j dtkbxbye ghjbpdjlbncz t¸ fyfkbp yf ghtlvtn yf[j;ltybz cbvdjkjd «| » rjnjhst bvt.n pyfxtybt kjubxtcrjuj «bkb». Äheubvb ckjdfvb jyb jpyfxf.n yf,jh fkmnthyfnbdys[ dfhbfynjd b ds,jh djpdhfoftvjq dtkbxbys bp yb[ ghjbpdjlbncz ghjbpdjkmyj. Õjnz 'nj rf;tncz ,tpevbtv b f,cjk.nyj ,tcgjktpysv, 'nj d ltqcndbntkmyjcnb bcgjkmpetncz lkz ,fkfycbhjdrb yfuheprb d cbnefwbz[ c j,hfnysv ghjrcb ult ghjbc[jlbn gjbcr bvty cthdthjd. Ífghbvth:
## ## map.txt -- vfccbd ghtj,hfpjdfybq ## static www1|www2|www3|www4 dynamic www5|www6
RewriteMap servers rnd:/path/to/file/map.txt
- Õ'i afqk
MapType: dbm[=type] , MapSource: Ïenm r ceotcnde.otve afqke d afqkjdjq cbcntvt Unix
Çltcm, bcnjxybr — 'nj ldjbxysq afqk DBM ajhvfnf cjlth;fobq nj ;t cfvjt cjlth;bvjt xnj b ghjcnjq ntrcnjdsq afqk, jlyfrj d cgtwbfkmyjv dblt, jgnbvbpbhjdfyyjv lkz ltqcndbntkmyj ,scnhjuj gjbcrf. Ýnjn nbg vj;tn ,snm sdbm, gdbm, ndbm, bkb db d pfdbcbvjcnb jn yfcnhjtr ghb rjvgbkzwbb. Åckb nbg jgeoty, ds,bhftncz nbg ecnfyjdktyysq gj-evjkxfyb. ghb rjvgbkzwbb. Âs vj;tnt cjplfdfnm nfrjq afqk k.,jq enbkbnjq DBM bkb cktle.obv Perl crhbgnjv. Ó,tlbntcm xnj jy yfcnhjty lkz cjplfybz nht,etvjuj nbgf DBM afqkf. Ýnjn ghbvth cjplftn afqk NDBM.
#!/path/to/bin/perl ## ## txt2dbm -- convert txt map to dbm format ## use NDBM_File; use Fcntl; ($txtmap, $dbmmap) = @ARGV; open(TXT, "<$txtmap") or die "Couldn't open $txtmap!n"; tie (%DB, 'NDBM_File', $dbmmap,O_RDWR|O_TRUNC|O_CREAT, 0644) or die "Couldn't create $dbmmap!n"; while (<TXT>) { next if (/^s*#/ or /^s*$/); $DB{$1} = $2 if (/^s*(S+)s+(S+)/); } untie %DB; close(TXT);
- Âyenhtyyzz aeyrwbz
MapType: int , MapSource: dyenhtyyzz aeyrwbz Apache
Çltcm, bcnjxybr — 'nj rfrfz-kb,j dyenhtyyzz aeyrwbz Apache. Â yfcnjzott dhtvz ds yt vj;tnt cjplfdfnm cdjb cj,cndtyyst aeyrwbb, jlyfrj e;t ceotcnde.n cktle.obt aeyrwbb:
- toupper:
Ïhtj,hfpetn rk.x gjbcrf d dth[ybq htubcnh.
- tolower:
Ïhtj,hfpetn rk.x gjbcrf d yb;ybq htubcnh.
- escape:
Òhfyckbhetn cgtwbfkmyst cbvdjks d rk.xt gjbcrf d b[ xbckjdst rjls.
- unescape:
Òhfyckbhetn xbckjdst rjls d rk.xt gjbcrf j,hfnyj d cgtwbfkmyst cbvdjks.
- Âytiyzz ghjuhfvvf ghtj,hfpjdfybz
MapType: prg , MapSource: Ïenm r ceotcnde.otve afqke d afqkjdjq cbcntvt Unix
Çltcm, bcnjxybr — 'nj ghjuhfvvf, f yt afqk c fccjwbfnbdysv vfccbdjv. Äkz t¸ cjplfybz ds vj;tnt bcgjkmpjdfnm k.,jq ds,hfyysq zpsr, jlyfrj htpekmnfn ljk;ty ,snm bcgjkyztvsv afqkjv (n.t., kb,j j,]trnysv rjljv kb,j crhbgnjv c vfubxtcrjq gthdjq cnhjxrjq '#!/path/to/interpreter ').
Ýnf ghjuhfvvf pfgecrftncz jlby hfp ghb pfgecrt cthdthf Apache b pfntv dpfbvjltqcndetn c vt[fybpvjv ghtj,hfpjdfybq xthtp afqkjdst j,hf,jnxbrb stdin (gjnjr ddjlf) b stdout (gjnjr dsdjlf). Äkz rf;ljuj gjbcrf d vfccbdt, cjjndtncnde.obq rk.x lkz gjbcrf, ,eltn gjkexfnmcz d dblt cnhjrb, gjlfdftvjq yf stdin b jrfyxbdf.otqcz cbvdjkjv gthtdjlf cnhjrb. Çfntv 'nf ghjuhfvvf ljk;yf dthyenm pyfxtybt yfqltyyjq dtkbxbys d stdout d dblt cnhjrb jrfyxbdf.otqcz cbvdjkjv gthtdjlf cnhjrb kb,j cnhjrjq bp xtnsh¸[ cbvdjkjd «NULL » tckb gjbcr ytelfxty (n.t., lkz cjjndtncnde.otuj pyfxtybz rk.xf yt yfqltyj ybrfrjuj pyfxtybz). Òhbdbfkmyfz ghjuhfvvf htfkbpe.ofz vfccbd 1:1 (n.t., rk.x == pyfxtybt) vj;tn dsukzltnm nfr:
#!/usr/bin/perl $| = 1; while (<STDIN>) { # ...put here any transformations or lookups... print $_; }
Îlyfrj ,elmnt jxtym jcnjhj;ys:
- "Keep it simple, stupid" (KISS) — ltkfq 'nj ghjot, lehfxjr, gjnjve xnj tckb 'nf ghjuhfvvf pfdbcytn — 'nj gjdtcbn cthdth Apache rjulf dcnhtnbncz ghfdbkj bcgjkmpe.ott 'njn vfccbd (cjplfdftvsq dytiytq ghjuhfvvjq).
- Äkz bp,t;fybz hfcghjcnhfytyyjq jib,rb: ybrjulf yt ltkfqnt ,eathbpjdfyysq ddjl/dsdjl lkz
stdout ! Ýnj dspjdtn ,tcrjytxyjt pfwbrkbdfybt! Înc.lf «$|=1 » d dsitghbdtltyyjv ghbvtht…
- Ècgjkmpeqnt lbhtrnbde
RewriteLock lkz jghtltktybz afqkf ,kjrbhjdjr rjnjhsq mod_rewrite vj;tn bcgjkmpjdfnm lkz cby[hjybpfwbb cdzpb c 'njq ghjuhfvvjq. Ïj-evjkxfyb. nfrfz cby[hjybpfwbz yt ghjbpdjlbncz.
Äbhtrnbdf RewriteMap vj;tn dcnhtxfnmcz ,jktt jlyjuj hfpf. Äkz rf;ljuj vfccbdf bcgjkmpeqnt jlye RewriteMap lbhtrnbde lkz j,]zdktybz afqkf c vfccbdjv ghtj,hfpjdfybq. Â nj dhtvz rfr ds yt vj;tnt jghtltkznm vfccbd d rjyntrcnt rfnfkjuf, tuj bcgjkmpjdfybt d 'njv rjyntrcnt rjytxyj ;t djpvj;yj.
ÇfvtxfybtÄkz ghjcnjuj ntrcnjdjuj b DBM afqkjd rk.xb gjbcrf r'ibhe.ncz zlhjv lj nt[ gjh gjrf yt bpvtybncz nbg mtime afqkf c vfccbdjv bkb gjrf yt ghjbpjqltn htcnfhn cthdthf. Òfrbv j,hfpjv, ds vj;tnt bcgjkmpjdfnm fccjwbfnbdyst vfccbds d ghfdbkf[ rjnjhst bcgjkmpe.ncz lkz rf;ljuj pfghjcf. Ýnj yt ghj,ktvf, gjnjve xnj dytiybq gjbcr ghjbc[jlbn njkmrj jlby hfp!
RewriteOptions Äbhtrnbdf
Îgbcfybt: |
Ócnfyfdkbdftn rjt-rfrbt cgtwbfkmyst jgwbb lkz vt[fybpvf ghtj,hfpjdfybq |
Ñbynfrcbc: |
RewriteOptions Options |
Çyfxtybt gj evjkxfyb.: |
None |
Êjyntrcn: |
server configvirtual hostdirectory.htaccess |
Ðfphtitybt: |
FileInfo |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Äbhtrnbdf RewriteOptions ecnfyfdkbdftn ytrjnjhst cgtwbfkmyst jgwbb lkz ntreotq rjyabuehfwbb d rjyntrcnt cthdthf bkb rfnfkjuf. Ñnhjrb Option vjuen bvtnm cktle.obq dbl:
- '
inherit ' Ýnj ghbdjlbn d ltqcndbt yfcktljdfybt ntreotq rjyabuehfwbtq rjyabuehfwbb hjlbntkz. Â rjyntrcnt dbhnefkmyjuj cthdthf 'nj jpyfxftn xnj fccjwbfnbdyst vfccbds, eckjdbz b ghfdbkf jcyjdyjuj cthdthf yfcktle.ncz. Â rjyntrcnt rfnfkjuf 'nj jpyfxftn xnj eckjdbz b ghfdbkf d rjyabuehfwbjyys[ afqkf[ .htaccess hjlbntkmcrb[ rfnfkjujd yfcktle.ncz.
RewriteRule Äbhtrnbdf
Îgbcfybt: |
Îghtltkztn ghfdbkf lkz vt[fybpvf ghtj,hfpjdfybq |
Ñbynfrcbc: |
RewriteRule Øf,kjyÏjlcnfyjdrf |
Çyfxtybt gj evjkxfyb.: |
None |
Êjyntrcn: |
server configvirtual hostdirectory.htaccess |
Ðfphtitybt: |
FileInfo |
Ñnfnec: |
Ðfcibhtybt |
Ìjlekm: |
mod_rewrite |
Ñjdvtcnbvjcnm: |
Ôkfu cookie ljcnegty d Apache 2.0.40 b ,jktt gjplyb[. |
Äbhtrnbdf RewriteRule b tcnm yfcnjzofz hf,jxfz kjiflrf ghtj,hfpjdfybq. Ýnf lbhtrnbdf vj;tn dcnhtxfnmcz ,jktt jlyjuj hfpf. Êf;lfz lbhtrnbdf, d 'njv ckexft, jghtltkztn jlyj ghfdbkj ghtj,hfpjdfybz. Ïjhzljr jghtltktybq 'nb[ ghfdbk df;ty, gjnjve xnj 'njn gjhzljr bcgjkmpetncz ghb j,hf,jnrt ghfdbk dj dhtvz hf,jns.
Øf,kjy 'nj perl cjdvtcnbvjt htuekzhyjt dshf;tybt rjnjhjt ghbvtyztncz r ntreotve URL. Çltcm gjl «ntreobv» gjlhfpevtdftncz pyfxtybt URL rjulf ghbvtyztncz 'nj ghfdbkj. Ýnjn URL yt j,zpfntkmyj cjdgflftn c gthdjyfxfkmyj pfghjityysv URL, gjnjve xnj k.,jt rjkbxtcndj ghfdbk djpvj;yj e;t ,skb ghbvtytys r ytve b cjjndtncndtyyj ghtj,hfpjdfkb tuj.
Ítrjnjhst erfpfybz gj cbynfrcbce htuekzhys[ dshf;tybq:
Òtrcn: . Ë.,jq jlbyjxysq cbvdjk [ chars] Êkfcc cbvdkjkd: Îlby bp cbvdjkjd [^ chars] Êkfcc cbvdkjkd: Íb jlby bp cbvdjkjd text1| text2 Àkmnthyfnbdf: text1 bkb text2 Êdfynjhs (cbvdjks lkz j,jpyfxtybz rjkbxtcndtyys[ jnyjitybq): ? 0 bkb 1 bp ghtlitcnde.otuj ntrcnf * 0 bkb N bp ghtlitcnde.otuj ntrcnf (N > 0) + 1 bkb N bp ghtlitcnde.otuj ntrcnf (N > 1) Ãheggbhjdrf: ( text) Ãheggbhjdrf ntrcnf (kb,j ecnfyjdrf uhfybw fkmnthyfnbds bkb lkz cjplfybz j,hfnys[ cdzptq ult N uheggf, rjnjhfz vj;tn ,snm bcgjkmpjdfyf d RHS lbhtrnbds RewriteRule c $ N) Ìfhrths: ^ Ìfhrth yfxfkf cnhjrb $ Ìfhrth rjywf cnhjrb Ýrhfybhjdfybt: char 'rhfybhjdfybt rjyrhtnyjuj cbvdjkf (r ghbvthe lkz erfpfybz cbvdjkjd ".[]() " b n.l.)
Ájktt gjlhj,ye. byajhvfwb. j htuekzhys[ dshf;tybz[, cvjnhbnt d ljrevtynfwbb gj htuekzhysv dshf;tybzv Perl ("perldoc perlre"). Åckb ds pfbynthtcjdfys d to¸ ,jktt ltnfkmyjq byajhvfwbb j htuekzhys[ dshf;tybz[ b b[ lbfktrnf[ (POSIX b n.l.), cvjnhbnt cktle.oe., cgtwbfkmyj yfgbcfyye. gj 'njq ntvt rybue:
Mastering Regular Expressions Jeffrey E.F. Friedl Nutshell Handbook Series O'Reilly & Associates, Inc. 1997 ISBN 1-56592-257-3
Êhjvt njuj, d mod_rewrite cbvdjk jnhbwfybz (NOT) ('! ') — ljgecrftvsq ghtabrc d if,kjyt. Ýnj lf¸n dfv djpvj;yjcnm bydthnbhjdfnm ltqcndbt if,kjyf; ye r ghbvthe crf;tv: "tckb ntreobq URLyt cjdgflftn c 'nbv if,kjyjv". Ýnj vj;tn ,snm bcgjkmpjdfyj d jcj,s[ ckexfz[, rjulf ghjot yfqnb if,kjy lkz ytcjjndtncndbz, bkb d rfxtcndt gjcktlytuj ghfdbkf, hf,jnf.otuj gj evjkxfyb..
ÏhbvtxfybtÏhb bcgjkmpjdfybb cbvdjkf NOT (yt) lkz bydthnbhjdfybz ltqcndbz if,kjyf ds yt vj;tnt bvtnm cuheggbhjdfyyst xfcnb uheggjds[ cbvdjkjd d if,kjyt. Ýnj ytdjpvj;yj gjnjve xnj rjulf ytn cjjndtncndbz if,kjye, lkz uhegg ytn ybrfrjuj cjlth;bvjuj. Â htpekmnfnt, tckb bcgjkmpe.ncz if,kjys c jnhbwfybtv, ds yt vj;tnt bcgjkmpjdfnm $N d cnhjrf[ gjlcnfyjdjr!
Ïjlcnfyjdrf d ghfdbkt ghtj,hfpjdfybz 'nj cnhjrf ,eltn gjlcnfdkznmcz (bkb ,eltn pfvtyznm) dvtcnj jhbubyfkmyjuj URL, lkz rjnjhjuj tcnmcjdgfltybt Øf,kjye. Êhjvt ghjcnjuj ntrcnf ds vj;tnt bcgjkmpjdfnm
- j,hfnyst cdzpb
$N yf if,kjys d RewriteRule
- j,hfnyst cdzpb
%N yf gjcktlybq cjjndtncnde.obq if,kjy d RewriteCond
- gthtvtyyst cthdthf d rfxtcndt ghjdthztvs[ cnhjr d eckjdbz[ ghfdbk (
%{VARNAME} )
- dspjds pfghjcjd r vfccbde (
${mapname:key|default} )
Î,hfnyst cdzpb 'nj $ N (N=0..9) bltynbabrfnjhs rjnjhst pfvtyz.ncz cjlth;bvsv N-q uheggs gjl[jlzotuj Øf,kjyf. Ïthtvtyyst cthdthf Ýnj nj;t cfvjt xnj b ÑhfdybdftvfzÑnhjrf lbhtrnbds RewriteCond . Çfghjcs r vfccbde ghbikb bp lbhtrnbds RewriteMap nfv jyb b j,]zcytys. Ýnb nhb nbgf gthtvtyys[ hfccvfnhbdf.ncz d gjhzlrt, d rjnjhjv jyb blen d dsitghbdtltyyjv cgbcrt.
Êfr e;t ,skj egjvzyenj dsit, dct ghfdbkf ghtj,hfpjdfybq ghbvtyz.ncz c bcgjkmpjdfybtv Ïjlcnfyjdrb (d gjhzlrt, d rjnjhjv jyb jghtltktys d rjyabuehfwbjyyjv afqkt). URL gjkyjcnm. pfvtyztncz Ïjlcnfyjdrjq b ghjwtcc ghtj,hfpjdfybz bltn lj nt[ gjh, gjrf yt jcnfytncz ,jkmit ybrfrb[ ghfdbk, tckb njkmrj jy yt ghthdfy cgtwbfkmyj, c gjvjom. akfuf L — cv. yb;t.
Ñeotcndetn cgtwbfkmyfz cnhjrf gjlcnfyjdrb dblf '- ' rjnjhfz jpyfxftn: ÍÅÒ gjlcnfyjdrb! Çdexbn ukegj? Ítn, 'nj gjktpyj lkz ghfdbk ghtj,hfpjdfybz rjnjhst njkmrj ghjdthz.n ytrjnjhst URL jlyfrj yt ghjbpdjlzn gjlcnfyjdjr, n.t., d cdzprt c akfujv C (wtgjxrf) djpvj;yj bvtnm ,jktt xtv jlby if,kjy, ghbvtyztvsq gthtl ghjdtltybtv ytgjchtlcndtyyj cfvjq gjlcnfyjdrb.
Åo¸ jlyj pfvtxfybt: Âs lf;t vj;tnt cjplfdfnm URL, cjlth;fobt cnhjre pfghjcf, d cnhjrt gjlcnfyjdrb. Ïhjcnj bcgjkmpeqnt djghjcbntkmysq pyfr dyenhb cnhjrb gjlcnfyjdrb lkz erfpfybz njuj, cktle.ott pf ybv cjlth;bvjt ljk;yj ,snm ghtj,hfpjdfyj d QUERY_STRING (cnhjre pfghjcf). Êjulf ds [jnbnt e,hfnm ceotcnde.oe. cnhjre pfghjcf, pfdthifqnt cnhjre gjlcnfyjdrb ghjcnj djghjcbntkmysv pyfrjv.
ÏhbvtxfybtÅcnm jlyf jcj,tyyjcnm: Êjulf ds ghtldfhztnt gjkt gjlcnfyjdrb cnhjrjq http:// thishost[:thisport], — mod_rewrite jnhtpftn t¸ fdnjvfnbxtcrb. Ýnj fdnjvfnbxtcrjt ectxtybt gjlhfpevtdftvjt ghb dytiytv htlbhtrnt URL gjktpyfz b df;yfz jcj,tyyjcnm ghb bcgjkmpjdfybb d cdzprt c pfghjcfvb r vfccbdfv ghtj,hfpjdfybq utythbhe.ob[ bvz [jcnf. Âpukzybnt yf gthdsq ghbvth, d hfpltkt ghbvthjd yb;t, xnj,s gjyznm 'nj.
ÏjvybntÁtpeckjdysq dytiybq htlbhtrn yf dfi cj,cndtyysq cthdth yt ,eltn hf,jnfnm c ghtabrcjv http://thishost bp-pf 'njq jcj,tyyjcnb. ×nj,s bcgjkmpjdfnm nfrjq cfvjhtlbhtrn, Âs ljk;ys bcgjkmpjdfnm akfu R(cv. yb;t).
 gjlcnfyjdrt ds vj;tnt bcgjkmpjdfnm, d njv xbckt, b cgtwbfkmyst akfub gentv lj,fdktybz cktle.otq rjycnherwbb:
[ akfub]
d rfxtcndt nhtnmtuj fhuevtynf lbhtrnbds RewriteRule . Ôkfub — 'nj hfpltk¸yysq pfgznsvb, cktle.obq cgbcjr akfujd:
- '
redirect|R [=code]' (dspsdftn htlbhtrn) Ïhtabrc d Ïjlcnfyjdrt dblf http://thishost[:thisport]/ (cjplf.obq yjdsq URL bp rfrjuj-kb,j URI) pfgecrftn dytiybq htlbhtrn (gthtyfghfdktybt). Åckb ytn yfrfrjuj rjlf d gjlcnfyjdrt jndtn ,eltn c HTTP cnfnecjv 302 (ÂÐÅÌÅÍÍÎ ÏÅÐÅÌÅÙÅÍ). Åckb ds [jnbnt bcgjkmpjdfnm lhrubt rjls jndtnjd d lbfgfpjyt 300-400, ghjcnj yfgbibnt b[ d dblt xbckf bkb bcgjkmpeqnt jlyj bp cktle.ob[ cbvdjkbxtcrb[ bv¸y: temp (gj-evjkxfyb.), permanent , seeother . Ècgjkmpeqnt 'nj d lbhtrnbdf[, rjnjhst ljk;ys ghtj,hfpjdsdfnm ytrbt dbhnefkmyst URL d htfkmyst b djpdhfofnm b[ rkbtyne, yfghbvth, ghtj,hfpjdsdfnm «/~ » d «/u/ » bkb dctulf lj,fdkznm ck'i r /u/ user, b n.l.
Ïhbvtxfybt: Ïhb bcgjkmpjdfybb 'njuj akfuf, e,tlbntcm, xnj gjkt gjlcnfyjdrb, 'nj hf,jnf.obq URL! Åckb 'nj yt nfr, ds gthtyfghfdkztnt d ybrelf! È gjvybnt, xnj cfv gj ct,t 'njn akfu, njkmrj ljgjkyztn URL cnhjrjq http://thishost[:thisport]/ , b ghjwtcc ghtj,hfpjdfybz ghjljk;ftncz. Òfr;t, j,sxyj ds [jnbnt jcnfyjdbnmcz b cltkfnm 'njn htlbhtrn ytvtlktyyj. Äkz jcnfyjdrb ghjwtccf ghtj,hfpjdfybz, dfv nfr;t ye;yj yfgbcfnm akfu 'L'.
- '
forbidden|F ' (ltkftn URL pfghtotyysv) Ýnj ltkftn ntreobq URL pfghto¸yysv, yfghbvth, rkbtyne ytvtlktyyj jnghfdkztncz jndtn c HTTP cnfnecjv 403 (ÇÀÏÐÅÙÅÍÎ). Ècgjkmpeqnt 'njn akfu d cjxtnfybb c cjjndtncnde.obvb RewriteConds lkz ,kjrbhjdfybz URL gj ytrjnjhsv rhbnthbzv.
- '
gone|G ' (ltkftn URL «v¸hndsv») Ýnjn akfu ltkftn ntreobq URL «vthndsv», n.t., ytvtlktyyj jnghfdkztncz HTTP jndtn cj cnfnecjv 410 (GONE). Ècgjkmpeqnt 'njn akfu lkz vfhrbhjdrb «vthndsvb» yt ceotcnde.obt ,jktt cnhfybws.
- '
proxy|P ' (dspdftn ghjrcb) Ýnjn akfu gjvtxftn gjlcnfyjdjxye. xfcnm rfr dyenhtyybq pfghjc ghjrcb b ytvtlktyyj (n.t., ghjwtcc ghtj,hfpjdfybz pltcm jcnfyfdkbdftncz) ghjgecrftn tuj xthtp ghjrcb vjlekm. Âs ljk;ys e,tlbnmcz, xnj cnhjrf gjlcnfyjdrb 'nj htfkmysq URI (yfghbvth, nbgbxyj yfxbyf.obqcz c http:// hostname), rjnjhsq vj;tn ,snm j,hf,jnfy ghjrcb vjlektv Apache. Åckb 'nj yt nfr, ds gjkexbnt jib,re jn ghjrcb vjlekz. Ècgjkmpeqnt 'njn akfu lkz njuj, xnj,s lj,bnmcz ,jktt vjoyjq htfkbpfwbb lbhrtnbds ProxyPass, byntuhbhe.otq ytrjnjhjt cjlth;bvjt yf elfktyys[ cthdthf[, d ghjcnhfycndj bv¸y kjrfkmyjuj cthdthf.
Ïhbvtxfybt: Äkz njuj xnj,s 'nj bcgjkmpjdfnm e,tlbntcm xnj e dfc tcnm hf,jnf.obq ghjrcb vjlekm yf dfitv cthdtht Apache. Åckb ds yt pyftnt 'njuj ghjdthmnt tcnm kb d dsdjlt «httpd -l » cnhjxrf mod_proxy.c . Åckb lf, 'nb djpvj;yjcnb ljcnegys mod_rewrite. Åckb ytn, nj cyfxfkf ds ljk;ys gthtcj,hfnm ghjuhfvve «httpd » c drk.xtyysv ghjrcb vjlektv.
- '
last|L ' (gjcktlytt ghfdbkj) Îcnfyjdbnm ghjwtcc ghtj,hfpjdfybz yf 'njv vtcnt b yt ghbvtyznm ,jkmit ybrfrb[ ghfdbk ghtj,hfpjdfybq. Ýnj cjjndtncndetn jgthfnjhe last d Perl bkb jgthfnjhe break d zpsrt C. Ècgjkmpeqnt 'njn akfu lkz njuj, xnj,s yt ghtj,hfpjdsdfnm ntreobq URL lheubvb, cktle.obvb pf 'nbv, ghfdbkfvb ghtj,hfpjdfybq. Ê ghbvthe, bcgjkmpeqnt 'nj lkz ghtj,hfpjdfybz rjhytdjuj URL bp ('/ ') d htfkmysq, yfghbvth, '/e/www/ '.
- '
next|N ' (cktle.ibq hfeyl) Ïthtpfgecnbnm ghjwtcc ghtj,hfpjdfybq (yfxfd c gthdjuj ghfdbkf). Â 'njv ckexft URL cyjdf cjgjcnfdkztncz ytrbv eckjdbzv, yj yt jhbubyfkmysq URL, f URL dsitlibq bp gjcktlytuj ghfdbkf ghtj,hfpjdfybz. Ýnj cjjndtncndetn jgthfnjhe next d Perl bkb jgthfnjhe continue bp zpsrf C. Ècgjkmpeqnt 'njn akfu lkz gthtpfgecrf ghjwtccf ghtj,hfpjdfybq, n.t., ,tpeckjdyjve gtht[jle yf yfxfkj wbrkf. Îlyfrj ,elmnt jcnjhj;ys, lkz njuj xnj,s yt cltkfnm ,tcrjytxysq wbrk!
- '
chain|C ' (cdzpm cj cktle.obv ghfdbkjv) Ýnjn akfu cdzpsdftn ntreott ghfdbkj cj cktle.obv (rjnjhjt, d cdj. jxthtlm, vj;tn ,snm cdzpfyj cj cktle.obv pf ybv, b n.l.). Ýnj bvttn cktle.obq 'aatrn: tckb tcnm cjjndtncndbt ghfdbke, ghjwtcc ghjljk;ftncz rfr j,sxyj, n.t., akfu yt ghjbpdjlbn ybrfrjuj 'aatrnf. Åckb ghfdbkj yt cjjndtncndetn eckjdb., dct cktle.obt, cdzpfyyst ghfdbkf, ghjgecrf.ncz. Ífghbvth, bvgjkmpeqnt 'nj lkz elfktybz «.www » xfcnb d rjyabuehfwbjyyjv ghfdbkt rjyntrcnf rfnfkjuf hf,jnf.otuj rjulf ds hfphtiftnt dytiybq htlbhtrn (ult yt ljk;yj ,snm «.www »!).
- '
type|T =MIME-nbg' (ghbyelbntkmyj ecnfyjdbnm MIME nbg) Ïhbyelbntkmyj ecnfyjdbnm MIME-nbg wtktdjuj afqkf d MIME-nbg. Ê ghbvthe, 'nj vj;yj bcgjkmpjdfnm lkz bvbnfwbb mod_alias lbhtrnbds ScriptAlias rjnjhfz ghbyelbntkmyj ecnfyfdkbdftn lkz dct[ afqkjd dyenhb jnj,hf;ftvjuj rfnfkjuf MIME nbg hfdysq «application/x-httpd-cgi ».
- '
nosubreq|NS ' (bcgjkmpetncz njkmrj d ckexft ytdyenhtyytuj gjlpfghjcf) Ýnjn akfu lftn rjvfyle vt[fybpve ghtj,hfpjdfybq ghjgecnbnm lbhtrnbde tckb ntreobq gjlpfghjc zdkztncz dyenhtyybv gjlpfghjcjv. Ê ghbvthe, dyenhtyybt gjlpfghjcs d Apache ghjbc[jlzn njulf, rjulf mod_include gsnftncz gjkexbnm byajhvfwb. j djpvj;ys[ afqkf[ gj-evjkxfyb. lkz rfnfkjujd (index.xxx ). Ïhb gjlpfghjcf[ 'nj yt dctulf gjktpyj b lf;t byjulf dspsdftn ghj,ktve d hf,jnt dctuj yf,jhf lbhtrnbd ghtj,hfpjdfybq. Ècgjkmpeqnt 'njn akfu lkz bcrk.xtybz ytrjnjhs[ ghfdbk.
Ècgjkmpeqnt cktle.ott ghfdbkj gj cdjtve ecvjnhtyb.: dczrbq hfp rjulf ds ghtldfhztnt ytrjnjhst URL ghtabrcjv gthtlfdfz b[ yf j,hf,jnre CGI-crhbgne, — dtkbr ifyc xnj ds yfgjhtntcm yf ghj,ktvs (bkb lf;t yf ytye;yst bplth;rb) d ckexft ghbvtytybz gjlpfghjcjd. Â 'nb[ ckexfz[, bcgjkmpeqnt 'njn akfu.
- '
nocase|NC ' (yt exbnsdfnm htubcnh) Ýnj ltkftn Øf,kjy ytxecndbntkmysv r htubcnhe, n.t., ytn hfpkbxbq vt;le 'A-Z' b 'a-z' rjulf Øf,kjy ghbvtyztncz r ntreotve URL.
- '
qsappend|QSA ' (lj,fdkznm cnhjre pfghjcf) Ýnjn akfu erfpsdftn vt[fybpve ghtj,hfpjdfybq yf lj,fdktybt f yt pfvtye, cnhjrb pfghjcf bp URL r ceotcnde.otq, d cnhjrt gjlcnfyjdrb. Ècgjkmpeqnt 'nj rjulf ds [jnbnt lj,fdkznm ljgjkybntkmyst lfyyst d cnhjre pfghjcf c gjvjom. lbhtrnbd ghtj,hfpjdfybq.
- '
noescape|NE ' (yt 'rhfybhjdfnm URI ghb dsdjlt) Ýnjn akfu yt lf¸n mod_rewrite ghbvtyznm j,sxyst ghfdbkf 'rhfybhjdfybz URI r htpekmnfne ghtj,hfpjdfybz. Î,sxyj, cgtwbfkmyst cbvdjks (nfrbt rfr '%', '$', ';', b nfr lfktt) ,elen 'rhfybhjdfys b[ itcnyflwfnbhbxysvb gjlcnfyjdrfvb ('%25', '%24', b '%3B', cjjndtncndtyyj); 'njn akfu yt lftn 'nj ltkfnm. Ýnj gjpdjkztn cbvdjkfv ghjwtynf gjzdkzncz yf ds[jlt , rfr d
RewriteRule /foo/(.*) /bar?arg=P1%3d$1 [R,NE]
lkz rjnjhjuj '/foo/zed ' ghtj,hfpjdsdfkjcm ,s d ,tpjgfcysq pfghjc '/bar?arg=P1=zed '.
- '
passthrough|PT ' (ghjgecrfnm xthtp cktle.obq j,hf,jnxbr) Ýnjn akfu lf¸n rjvfyle vt[fybpve ghtj,hfpjdfybq ecnfyfdkbdfnm gjkt uri dyenhtyytq cnhernehs request_rec hfdysv gjk. filename . Ýnjn akfu, ghjcnj kbim [bnhsq nh.r, lkz njuj xnj,s bvtnm djpvj;yjcnm j,hf,jnrb dsdjlf lbhtrnbd RewriteRule , lbhtrnbdfvb Alias , ScriptAlias , Redirect , b n.l. bp lheub[ nhfyckznjhjd URI-bvz afqkf. Òhbdbfkmysq ghbvth lkz gjrfpf 'njq ctvfynbrb: tckb ds [jnbnt ghtj,hfpjdfnm /abc d /def c bcgjkmpjdfybtv vt[fybpvf ghtj,hfpjdfybq mod_rewrite b pfntv /def d /ghi c bcgjkmpjdfybtv mod_alias :
RewriteRule ^/abc(.*) /def$1 [PT] Alias /def /ghi
Åckb ds jgecnbnt akfu PT , mod_rewrite ghtrhfcyj cltkftnc cdj. hf,jne, n.t., jy ghtj,hfpetn uri=/abc/... d filename=/def/... rfr ljk;ty ltkfnm gjkyjcnm. API-cjdvtcnbvsq nhfyckznjh URI-bvz afqkf. Çfntv yfcnf¸n jxthtlm mod_alias gsnf.otujcz cltkfnm gtht[jl URI-bvz afqkf rjnjhsq b yt ,eltn hf,jnfnm.
Ïhbvtxfybt: Âs ljk;ys bcgjkmpjdfnm 'njn akfu tckb ds [jnbnt cvtibdfnm lbhtrnbds hfpys[ vjlektq cjlth;fob[ nhfyckznjhs URL-bvz afqkf. Òbgbxysq ghbvth 'nj bcgjkmpjdfybt vjlektq mod_alias b mod_rewrite ..
Äkz k.,bntktq gjrjdshznmcz d ApacheÅckb ,s ntreobq Apache API bvtk rfrjq-yb,elm gtht[dfnxbr bvz afqkf-bvz afqkf d ljgjkytybt r gtht[dfnxbre URI-bvz afqkf yfv ,s yt gjyflj,bkcz lfyysq akfu! Îlyfrj ,tp nfrjuj gtht[dfnxbrf 'njn akfu 'nj tlbycndtyyjt htitybt. The Apache Group j,celbkf 'ne ghj,ktve b lj,fdbn nfrjq gtht[dfnxbr dj 2-q dthcbb Apache.
- '
skip|S =rjkbxtcndj' (ghjgecnbnm cktle.ott ghfdbkj(f)) Ýnjn akfu erfpsdftn vt[fybpve ghtj,hfpjdfybq ghjgecrfnm cktle.ott rjkbxtcndj ghfdbk d gjcktljdfntkmyjcnb yfxbyf.otqcz c ntreotuj ghfdbkf. Ècgjkmpeqnt 'nj lkz cjplfybz gctdlj if-then-else rjycnherwbq: Ïjcktlytt ghfdbkj ,kjrf then ,eltn skip=N ult N rjkbxtcndj ghfdbk ,kjrf else. (Ýnj yt nj ;t cfvjt xnj b akfu 'chain|C'!)
- '
env|E= VAR:VAL' (ecnfyjdbnm gthtvtyye. jreh;tybz) Ïhbcdfbdftn gthtvtyyjq jrhe;tybz VAR pyfxtybt VAL, ult VAL vj;tn cjlth;fnm j,hfnyst cdzpb $N b %N ccskf.obtcz yf xfcnb htuekzhys[ dshf;tybq, rjnjhst ,elen hfcrhsns cjjndtncnde.obv j,hfpjv. Âs vj;tnt bcgjkmpjdfnm 'njn akfu ,jktt jlyjuj hfpf xnj,s ghbcdjbnm pyfxtybt ,jktt xtv jlyjq gthtvtyyjq. Ïjp;t, 'nb gthtvtyyst vjuen ,snm bcgjkmpjdfys dj vyjub[ cbnefwbz[, j,sxyj d XSSI (xthtp <!--#echo var="VAR"--> ) bkb d CGI crhbgnf[ (yfghbvth$ENV{'VAR'} ). Êhjvt njuj, ds vj;tnt 'nj bcgjkmpjdfnm d cktle.otv if,kjyt RewriteCond xthtp %{ENV:VAR} . Ècgjkmpeqnt 'nj lkz elfktybz, yj pfgjvbyfybz ytrjnjhjq byajhvfwbb bp URL.
- '
cookie|CO= NAME:VAL:domain[:lifetime[:path]]' (pfgbcfnm cocookie) Çfgbcsdftn cookie rkbtyne. Èvz cookie erfpsdftncz d NAME f tuj pyfxtybt d VAL. Ïjkt domain 'nj ljvty cookie, nfrjq rfr yfghbvth '.apache.org', jgwbjyfkmyjt lifetime 'nj dhtvz ;bpyb cookie d vbyenf[, b jgwbjyfkmysq path 'nj genm cookie
ÏhbvtxfybtÍbrjulf yt pf,sdf¸nt xnj Øf,kjy ghbvtyztncz rj dctve URL d rjyabuehfwbjyys[ afqkf cthdthf. Îlyfrj d rjyabuehfwbjyys[ afqkf[ rfnfkjujd, ghtabrc rfnfkjuf (rjnjhsq dctulf jlbyfrjd lkz rjyrhtnyjuj rfnfkjuf !), fdnjvfnbxtcrb elfkztncz ghb cjjndtncndbb if,kjye b fdnjvfnbxtcrb lj,fdkztncz gjckt pfdthitybz gjlcnfyjdrb. Ýnf jcj,tyyjcnm, jcyjdf lkz vyjub[ dbljd ghtj,hfpjdfybq, gjnjve xnj ,tp elfktybz ghtabrcf lkz hjlbntkmcrjuj rfnfkjuf nj;t ljk;yj ,snm cjjndtncndbt, xnj yt dctulf djpvj;yj.
Åcnm jlyj bcrk.xtybt: Åckb cnhjrf gjlcnfyjdrb yfxbyftncz c «http:// » d 'njv ckexft ghtabrc rfnfkjuf yt lj,fdkztncz b ghjbc[jlbn kb,j dytiybq htlbhtrn kb,j ghjgecrfybt xthtp ghjrcb (tckb bcgjkmpetncz akfu P!)!
ÏhbvtxfybtÄkz njuj xnj,s drk.xbnm vt[fybpv ghtj,hfpjdfybq d rjyabuehfwbjyys[ afqkf[ rfnfkjujd dfv ye;yj yfgbcfnm «RewriteEngine On » d 'nb[ cfvs[ afqkf[ b, rhjvt njuj, ljk;yf ,snm hfphtityf rjyabuehfwbjyyfz lbhtrnbdf «Options FollowSymLinks ». Åckb dfi flvbybcnhfnjh pfghtnbk gthtuhepre rjyabuehfwbjyyjq lbhtrnbds FollowSymLinks d gjkmpjdfntkmcrb[ rfnfkjuf[, d 'njv ckexft ds yt cvj;tnt bcgjkmpjdfnm vt[fybpv ghtj,hfpjdfybq. Ýnj juhfybxtybt ye;yj gj cjj,hf;tybzv ,tpjgfcyjcnb.
Âjn dct djpvj;yst rjv,byfwbb gjlcnfyjdjr c hfcibahjdrjq b[ pyfxtybq:
 rjyabuehfwbjyys[ afqkf[ rjyntrcnf cthdthf (httpd.conf ) lkz pfghjcf dblf «GET /somepath/pathinfo »:
Ïhfdbkj Ïjlcnfyjdrf ---------------------------------------------- ---------------------------------- ^/somepath(.*) otherpath$1 yt gjllth;bdftncz, n.r. ytdthyj! ^/somepath(.*) otherpath$1 [R] yt gjllth;bdftncz, n.r. ytdthyj! ^/somepath(.*) otherpath$1 [P] yt gjllth;bdftncz, n.r. ytdthyj! ---------------------------------------------- ---------------------------------- ^/somepath(.*) /otherpath$1 /otherpath/pathinfo ^/somepath(.*) /otherpath$1 [R] http://thishost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^/somepath(.*) /otherpath$1 [P] yt gjllth;bdftncz, - ukegj! ---------------------------------------------- ---------------------------------- ^/somepath(.*) http://thishost/otherpath$1 /otherpath/pathinfo ^/somepath(.*) http://thishost/otherpath$1 [R] http://thishost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^/somepath(.*) http://thishost/otherpath$1 [P] yt gjllth;bdftncz, - ukegj! ---------------------------------------------- ---------------------------------- ^/somepath(.*) http://otherhost/otherpath$1 http://otherhost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^/somepath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo xthtp dytiybq htlbhtrn (akfu [R] bp,snjxty) ^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo xthtp dyenhtyybq ghjrcb
Âyenhb rjyabuehfwbjyyjuj afqkf rfnfkjuf, lkz /somepath (n.t., afqk .htaccess d rfnfkjut /physical/path/to/somepath cjlth;bn RewriteBase /somepath ) lkz pfghjcf «GET /somepath/localpath/pathinfo »:
Ïhfdbkj Ïjlcnfyjdrf ---------------------------------------------- ---------------------------------- ^localpath(.*) otherpath$1 /somepath/otherpath/pathinfo ^localpath(.*) otherpath$1 [R] http://thishost/somepath/otherpath/pathinfo xthtp dytiybq htlbhtrn ^localpath(.*) otherpath$1 [P] yt gjllth;bdftncz, - ukegj! ---------------------------------------------- ---------------------------------- ^localpath(.*) /otherpath$1 /otherpath/pathinfo ^localpath(.*) /otherpath$1 [R] http://thishost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^localpath(.*) /otherpath$1 [P] yt gjllth;bdftncz, - ukegj! ---------------------------------------------- ---------------------------------- ^localpath(.*) http://thishost/otherpath$1 /otherpath/pathinfo ^localpath(.*) http://thishost/otherpath$1 [R] http://thishost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^localpath(.*) http://thishost/otherpath$1 [P] yt gjllth;bdftncz, - ukegj! ---------------------------------------------- ---------------------------------- ^localpath(.*) http://otherhost/otherpath$1 http://otherhost/otherpath/pathinfo xthtp dytiybq htlbhtrn ^localpath(.*) http://otherhost/otherpath$1 [R] http://otherhost/otherpath/pathinfo xthtp dytiybq htlbhtrn (akfu [R] bp,snjxty) ^localpath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo xthtp dyenhtyybq ghjrcb
Ïhbvth:
Ìs [jnbv ghtj,hfpjdfnm URL dblf
/ Language /~ Realname /.../ File
d
/u/ Username /.../ File . Language
Ìs ,thtv afqk, cjlth;fobq fccjwbfnbdysq vfccbd lkz ghtj,hfpjdfybq, ghbdtl¸yysq dsit b cj[hfyzt |