|
Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://itpm.msu.su/manual/ko/misc/rewriteguide.html
Äàòà èçìåíåíèÿ: Sat Feb 5 01:50:17 2005 Äàòà èíäåêñèðîâàíèÿ: Mon Oct 1 23:46:23 2012 Êîäèðîâêà: ISO8859-5 |
Apache HTTP Server Version 2.0

Ï?Ð?Ðê
Ralf S. Engelschall <rse@apache.org>
1997Ãò 12Ï?
ÐÜ É?Ì-ÄÒ mod_rewrite Ò?ÑÆ É?Ì-È? ÊÈÓö×áÄé.
ÐÜ É?Ì-ÄÒ Ð?À?È?ÐêÀÅ Í×Ñ? ÐëÎ?ÏÅÌ- ÊÞÅ?ÔÅÀäÅ×ÄÒ Ð?×?Ð?ÐÞ
URLÀ?ÇÓ É?Ñ?È? ×èÀñ×ßÁòÐ?×èÌ- ÎþÆËÀä ÎÖÖÔÔÅ
mod_rewriteÈ? Ë÷Ïû×ßÄÒÑ? ÌÃÈý×áÄé. URL
Ð÷ÐëÌÊ ÁäÔ?ÐË ÌÃÑ?×ßÏ? É?Ñ?È? ×èÀñ×ßÄÒ ÉöÉÐË ÐêÌÌØ? ÌÃÈý×áÄé.
mod_rewrite ÌâÀÃÎÖÖÔÔÅ mod_rewrite È?ÅòÐÊ ÁÂÐõ×ßÄé.
Ñÿ, URLÐË ÑÆÐë×â Ì? ÐæÄÒ À-ÇÒ×ßÀý Í×ÇÞ Ñ?ÁÃ×á È?ÅòÐÜÄé.
Ë?Ë?×èÏäÄ? ÀÕÐ× È?Å÷ ÑÎÇ?Ð× URL ÑÆÐëÐÜ ÀÅÄÙ×ßÄé. ÁçÇ?Ã?
Áç ÄûÀÅÇÞ Ë÷Ïû×ßÁò ÊÉÐò×ßÄé. mod_rewriteÐ×
ÓæÄû ÄìÑÅÐÊ ÓÚÊÈÐêÀÅ ÐÜ×è×ßÀý Ë÷Ïû×ßÁò ÍÁÑ? ÎÚÄéÄÒ ÑÅÐÜÄé.
ÍÙÑ?Îþ ÎÖÖÔÔÅ Ð?É?ÀÅÅÅ ÑÎÑÎ mod_rewriteÐ×
Ë?ÇÞÏþ ÏûÅÅÈ? ÉïÀï×áÄé.
ÄéÈ? ÈËÇÞ: mod_rewriteÏÅ Äû×è Ä÷ÍÕÐÊ
ÓÃÐÍÏÅ ÀÜÐË ÈäÀý ÐÄûÇÞ ÄéÍÓ Ë÷Ïû×ßÑ? ÎÚÀÕÃ?, À-ÇÒ×äÏÅ ÈÕÇñÅ×Îþ
ÎåÐÈÇÞ Ëþ ÅÏÎØ Ë÷Æ?ÏÅ Ê?Ñ? ÀÝÐÜÄé. ÐÜ ÁëÐÊ ÓÉÉ?ÒÀ ÀöÏüÈ?
ÈÇÁòÐ?×è ÐÜÉÜ ÎÛÇÑÑ? ÈþÀÅÑ? ÌÊÀ?Ë÷ÇÚÈ? ÌâÀÃ×ßÇÑÀý ×áÄé.
ÐÜÑ? ÃËÀÅ Ñ?Ñ? ÈÈÅùÎ?ÀÕÃ? ÄéÈ? Ë÷Æ?ÅùÐÜ ÈÈÅ÷ ÈÉÐÊ Í×ÏûÐ?ÐÞ ×èÀñÓ?ÐÜ Ã?ÏÒÄé. ÏÉÑ?ÏÅÌ- URL Ð÷ÐëÌÊÐ× ØöÈÆÌ?ÐË ÈÆÐÍÂ? ÉøÏüÁö ÉéÆ?Äé.
mod_alias, mod_userdir
ÅþÐË Ë÷Ïû×áÄéÈù [PT] ×ÓÇÅÁçÈ? ÓïÀÅ×áÄé. Ø?ÐÊ
ÑæÌ-É?ÌÃÑ?/ÀÅË?Ø?ÍÊÖ? Ë÷ÏûÐõÌâÀÅ ÎÖÄá .htaccess
Ë÷ÏûÐõÌâÏÅ ÎÛÈÒÀä ÁäÔ?ÐË Ì?Ñ?×â Ì?ÅÅ ÐæÄé. Ë÷Ïû×ßÁò Ð?ÏÅ
×çË? ÁäÔ?ÐÜ ÎþÆÂ ÁòÄÙÐË ×ßÄÒÑ? ÐÜ×è×ßÅÅÇß ×èÆ?. ÁçÇ?Èù É?Ñ?È?
×××â Ì? ÐæÄé.×á È?ÌâÍÊÏÅ Äû×è Ï?Ç? URLÐË ÀÅÑ?ÄÒ Ð?Ì-É?ÀÅ ÐæÄé. ÊÈÕû (Í×Ñ? Ë÷Ïû×ßÀý ÎÛÇÑÑ?Îï ×â) ÁòÑèÐÜ Å×ÄÒ URLÀ?, ÄìÓð Ø?ÐÊ ÃËÊÞ ÏûÅÅÐ× URLÐÜ ÐæÄé. Ë÷ÏûÐêÀÅ ÏôÓËÏÅ ÎþÆÂ URLÐË Ë÷Ïû×ßÄ?Ñ? ÁòÑèÐÜ Å×ÄÒ URLÈÈÐË ÊÈÏ?ÑðÎï ×áÄé.
ÁòÑèÐÜ Å×Ñ?ÎÚÄÒ È?Å÷ URLÐË ÊúÆ?ÏüÐ?ÀÅ ÎÛÅÅÇß ÀýÔÅÁòÐ?×è
ÏìÊÞ HTTP È?ÄéÐÜÇÊÌ××áÄé. ÏÉÈ? ÅùÎþ ÎÖÇÅ ÁäÔ?ÐÊ
/~userÈ? ÁòÑèÐÜ Å×ÄÒ /u/userÇÞ
ÄûÓÌ×ßÀý, /u/user ÈÆÑ?ÈÇÏÅ ÍÍÇÅÍ?ÀÅ Î?ÄéÈù
ÓïÀÅ×áÄé.
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R] RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
# 80É?ÐÜ ÎÖÄá Ö?Ö?ÏÅÌ- Í××ð×ßÄÒ Ë÷ÐÜÖ?Ïû
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]
# ÁçÈ?Àý, 80É? Ö?Ö?ÏÅÌ- Í××ð×ßÄÒ Ë÷ÐÜÖ?Ïû
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]
DocumentRootÈ? ÏÕÁô ÀöÏüÐ?Ì-É?Ð× DocumentRootÄÒ ÊÈÕû URL
"/"À? Ñ?Ñ? À?ÇÓÐæÄé. ÁçÇ?Ã? ÐÜÀ?ÏÅ È?Å÷
ÐêÇñÀÅ ÐæÑ? ÎÚÀý, ÐêÇñÀÅ ÄéÈ? Ï?Ç? À?ÏÅ Ø?ÎþÑ?ÐæÄÒ
ÀöÏüÀÅ ÐæÄé. ÏÉÈ? ÅùÎþ ÐÞÖ?Æ?Ãí Ë÷ÐÜÖ?ÏÅ (ÏìÊÞÈ? Ð?×á
Ø?ÖôÐÜÑ?) /e/www/ÏÝ (ÐÞÖ?Æ?ÃíÐË Ð?×á
Ø?ÖôÐÜÑ?) /e/sww/ÀÅ ÐæÄéÀý ×ßÐê. ÐÜÑ?
DocumentRootÀÅ
/e/www/ÐÜÁòÆ?É?ÏÅ, ÏôÓËÏÅÌ- ÖôÐÜÑ?ÏÅ
Ö?×äÅØ ÁçÈ ÅþÐË ÐÜÀ?ÏÅÌ- ÀÅÑ?ÏÝÎï ×áÄé.
ÏüÈ?ÄÒ URL /È? /e/www/ÇÞ
È?ÄéÐÜÇÊÌ×ÈÈ ×ßÈù ÅØÄé. Ë÷Ìâ×è ÊÈÐÜÑ?ÈÈ Í×Ñ?ÇÞ
mod_rewriteÈ? Ë÷Ïû×èÌ-ÈÈ ÀÅÄÙ×ßÄé.
(mod_alias ÅþÐÜ Ñ?À?×ßÄÒ) URL
Alias ÀÀÐÊ Ð?×?Ð?ÐÞ ÉöÉÐÊ ÎåÊÞÊàÈÈ
Ó?ÄÒÄé. DocumentRootÀÅ
È?Å÷ URLÐ× ÎåÊÞÊàÐÜÁòÆ?É?ÏÅ ÐÜ ÉöÉÐË Ë÷Ïû×ßÏ? È?ÄéÐÜÇÊÌ×ÐË
×â Ì? Î?Äé. mod_rewriteÈ? Ë÷Ïû×ßÈù
Ñ?Ò? À?Äì×ßÄé:
RewriteEngine on RewriteRule ^/$ /e/www/ [R]
Å?ÇÊÕôÈ?È? Ñ?Ô?×ßÄÒ URLÐ× ÈÆÑ?ÈÇ ÍÍÇÅÍ? É?Ñ?ÀÅ
Î?ÄéÈù È?Å÷ Ð?À?È?ÐêÄÒ Ø?Ø?×â ÀÝÐÜÄé. ÍÍÇÅÍ?ÀÅ Î?ÄéÈù,
Ñÿ /~quux/foo/ ÄûÍÕ /~quux/fooÈ?
Ë÷Ïû×ßÈù Ì-É?ÀÅ fooÆ?ÄÒ ÖÔÐßÐË
Ó?ÁòÆ?É?ÏÅ ÏÐÇ?ÀÅ ÉïË×áÄé. ÖÔÐßÐÜ Å?ÇÊÕôÈ?ÐÜÁòÆ?É?ÏÅ
ÉîÎÖÅùÐÜÑ? ÎÚÄÒÄé. ÄûÊÞÊàÐ× ÀöÏü ÊÈÕû Ì-É?ÀÅ ÐêÅÏÐÈÇÞ
URLÐË ÀýÔÅÑ?ÈÈ, ÀÅÂ? Ñ?Ñ? ×èÑðÎï ×â ÀöÏüÀÅ ÐæÄé. ÏÉÈ?
ÅùÎþ, CGI ÍÊÕ?ÈÃÖ? ÅþÐÈÇÞ ÊÉÐò×á URL Ð÷ÐëÌÊÐË ×á ØÔÏÅ
ÁçÇ?×ßÄé.
ÐÜ ÉÜÉ?×á É?Ñ?Ð× ×èÀñÉöÉÐÊ Ì-É?ÀÅ ÐêÅÏÐÈÇÞ ÈÆÑ?ÈÇ
ÍÍÇÅÍ?È? ÓïÀÅ×ßÄÒ ÀÝÐÜÄé. ÊúÆ?ÏüÐ?ÀÅ Ã?ÈãÑ? ÁçÈ ÅþÐË
ÏÓÉéÇÞ ÏôÓË×â Ì? ÐæÅÅÇß, ÏìÊÞ È?ÄéÐÜÇÊÌ×ÐË ×èÎï ×áÄé.
ÃËÊÞ È?ÄéÐÜÇÊÌ×ÐË ×áÄéÈù Å?ÇÊÕôÈ? ÖôÐÜÑ?ÏÅÈÈ ÅÏÐë×ßÏ?
ÐÜ ÖôÐÜÑ?ÀÅ Ë?Äû URLÇÞ Ö?×ä×ßÄÒ ÁçÈÂÐË ÊúÆ?ÏüÐ?ÀÅ
ÏôÓË×âÆ? Ó?ÐË Ì? Î?Äé. ÏÉÈ? ÅùÎþ, ÏìÊÞ È?ÄéÐÜÇÊÌ×ÐË
Ë÷Ïû×ßÑ? ÎÚÐËÆ? /~quux/foo/index.htmlÏÅÌ-
image.gifÈ? ÏôÓË×ßÈù
/~quux/image.gifÈ? ÏôÓË×ßÀä ÅØÄé!
ÁçÇÅÌ- ÐÜÈ? ×èÀñ×ßÁòÐ?×è ÄéÐÍÀ? ÀÀÐÜ ÌÃÑ?×áÄé:
RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo$ foo/ [R]
Ø?Å?ÇÊÕôÈ?Ð× ÓæË?Ð? .htaccess ÖÔÐßÏÅ
ÄéÐÍÀ? ÀÀÐÜ ÌÃÑ?×â Ì?ÅÅ ÐæÄé. ÁçÇ?Ã? ÓÃÈ?×ßÄÒÅ? ÊÞÄóÐÜ
ÅØÄé.
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]
ÐÞÖ?Æ?Ãí Ð?Ì-É?ÁÊÐ× È?Å÷ Ð?Ì-É?ÏÅ ÅÏÐß×ßÀý ÐßÀ?ÅØ URL ÁÈÑÆÈ? ÈÈÅùÀý ÍÝÄé. Ñÿ, È?Å÷ (Ñ?Ð×Ë? Ì-É?ÏÅ Ìã×ßÏ? Ì-É?ÏÅ Ð×ÑÈÐ?ÐÞ!) URLÐË Ì-É? ÅÆÈÃÐ?ÐÈÇÞ ÈÈÅ÷Äé! Ð? ÐÜÈ?À?À?ÏÅ Ì-É?ÅÆÈÃÐ?ÐÞ ÅÏÐß×á ÁÈÑÆÈ? ÊÞÏ?×èÎï ×áÄé: URLÐÊ Í×Ñ? Ì-É?È? Ñ?Ô?×ßÈù ÎØÅØÄé. Ì-É?ÁÊÐÜ ÐêÅÏÐÈÇÞ Í×Ñ? Ì-É?ÇÞ Ð?ÅÅ×áÄé.
ÈåÐ? Ë÷ÏûÐê, ÁçÇü, ÅÆÈÃÓÌÐ× Ð?ÔÅ Ñ?ÊÈÈ? Ð?Ðõ×á (ÊàËúÅØ) ÏìÊÞÈÚÏÅ Í×Ñ? Ì-É? Ñ?ÊÈÈ? Î?ÎþÏÒÄé. ÏìÊÞÈÚÐÊ ÄéÐÍÀ? ÀÀÐÊ ×?ÍÔÐÜÄé
user1 server_of_user1 user2 server_of_user2 : :
ÏüÈ?ÄÒ ÐÜ Ñ?ÊÈÈ? À?À? map.xxx-to-host
ÖÔÐßÏÅ Ð?Ðõ×ïÄé. ÄéÐÍÐÈÇÞ È?Å÷ Ì-É?ÏÅÌ- URLÐÜ Ì-É?ÏÅ
Î?ÄéÈù ÄéÐÍÀ? ÀÀÐÊ URLÐË,
/u/user/anypath /g/group/anypath /e/entity/anypath
ÄéÐÍÀ? ÀÀÐÜ È?ÄéÐÜÇÊÌ××áÄé
http://physical-host/u/user/anypath http://physical-host/g/group/anypath http://physical-host/e/entity/anypath
ÎÖÇÅ ÁäÔ?ÐÊ ÈÚÖÔÐßÐË Ë÷Ïû×ßÏ? ÐÜ ÐëÎ?ÐË ×áÄé (server0ÐÊ ÈÚÏÅ ×çÈåÐÜ Î?ÄÒ ÀöÏü Ë÷Ïû×â ÁòÊËÌ-É?Æ?Àý ÀÅÑ?×áÄé):
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\
ÈÉÐÊ Ð?À?È?ÐêÄÒ Ð?Ì-É?Ð× È?Å÷ Ø?Å?ÇÊÕôÈ?È? ÄéÈ? Ð?Ì-É?ÇÞ ÐÜÐ?×á ÀöÏü ×èÀñÓ?ÐË ÉÀÎþÊËÄé. ÐÜ ÉöÉÐÊ ÐÜÐ? Ì-É?È? ÄûÓÌ×â Ë?ÇÞÏþ Ì-É?È? ÁÈÌÊ×ßÄÒÅ? ÍÓÀ?ÐÜ ÀÙÈ?ÄÒ ÀöÏüÏÅ ×ÚÏô×ßÄé.
mod_rewriteÈ? Ë÷Ïû×ßÈù À?Äì×ßÄé.
ÐÜÐ? Ð?Ì-É?ÄÒ È?Å÷ /~user/anypath URLÐË
http://newserver/~user/anypathÇÞ
È?ÄéÐÜÇÊÌ××ßÈù ÅØÄé.
RewriteEngine on RewriteRule ^/~(.+) http://newserver/~$1 [R,L]
Ë÷ÏûÐêÀÅ Ì?ÓÅÈýÐÞ Ë÷ÐÜÖ?ÄÒ ÊÈÕû Ø?Å?ÇÊÕôÈ? ÁÈÑÆÈ?
ÈÈÅ÷Äé. Ñÿ, ÏÉÈ? ÅùÎþ ÐÜÈ?ÐÜ Ë÷ÏûÐêÈýÐ× ÓÉÉ?ÒÀ É?ÐêÐÞ
×ßÐ?Å?ÇÊÕôÈ?ÏÅ Ø?Å?ÇÊÕôÈ?È? ÅàÄé. ÁçÇÅÌ-,
/~foo/anypathÄÒ
/home/f/foo/.www/anypathÐÜÀý,
/~bar/anypathÄÒ
/home/b/bar/.www/anypathÐÜÄé.
ÉÀÀñ×?ÍÓÀÅ ÐæÄÒ URLÐË Ð?ÏÝ ÀÀÐÊ ÁÈÑÆÇÞ Ê?Ø?×ßÁòÐ?×è ÄéÐÍ ÁäÔ?ÐË Ë÷Ïû×áÄé.
RewriteEngine on RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3
ÐÜ ÏÉÄÒ Í×ÇÞ ×ßÅõÔêÎþÐ?ÐÜÄé: Å?ÇÊÕôÈ?ÊÀ
RewriteRulesÈ? ÈÕÏü ÈÉÐÜ Ë÷Ïû×ßÏ? ÐêÇñ
ÐêÓÌÄÒ ÁçÄûÇÞ ÅàÓÌÇÞ Ð?ÏÅ ÐêÇñÈ? ÐêÏ?ÍÊÇÄÀä ÊúÆ?ÏüÒÅ×ßÅÅÇß
×áÄé. ÉøÀö: Ã?ÄÒ 1992Ãò ÊÞÕÝ ÐêÐ?ÇãÀä Ë÷Ïû×â Ì? ÐæÄÒ
Ð?ÄàÍÊ Ìâ×ÑÖ?Ï?ÎþÅùÐË net.swÏÅ
È?ÎÖÅÞÀý ÐæÎ?Äé. ÐÜÄÒ ÃËÀÅ ÔÔ×ËÕÝÀ?×àÐË À?ÊÞ×ßÈùÌ-
Ï?Ç?×èÅÏÎØ Ï?ÀÅÍÓÀ?ÏÅ ÍÓÍÊÕë À?È?ÐêÏÝ ÃçÖ?Ï? À?È?ÐêÈ?
×èÏäÁòÆ?É?ÏÅ ÃË ÓûÉÜÐÜÐê ÐßÐÜÄé. ÈÕÑæÈÆÄé Ë?ÇÞ Ìâ×ÑÖ?Ï?ÎþÀÅ
ÓïÀÅÅÙ Æ?ÈÆÄé Å?ÇÊÕôÈ?È? ÁýÀä ÈÈÅùÎþÏäÄé:
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/
1996Ãò 7Ï? ÐÜ Ð?ÐõÌâÈ? ÈêÐæÄÒ Ð? ÐÞÕÝÖôÐÜÍÊÈ? Õû×è ÌÌË?ÏÅ À?ÀÃ×ßÁòÇÞ ÀñÑ?×îÄé. "ÈêÐæÄé"ÄÒ ÈËÐÊ, ÓæË?Ð? Å?ÇÊÕôÈ?ÏÅ CGI ÍÊÕ?ÈÃÖ?È? ÅÞÑ? ÎÚÀýÅÅ, Ð?ÐõÌâ ÀøÓ?ÁÈÑÆÈ? Ñ?Ñ? ÊúÆ?ÏüÑ?×ßÁö ÉéÆ?ÄéÄÒ ÆöÐÜÄé. Ïæ? Ð?ÐõÌâÈ? Ã?ÑïÏÅ FTPÇÞÅÅ Ñ?Áé×â Ì? ÐæÅÅÇß ÈÈÅù ÏÉÑ?ÐÜÏÄÁòÆ?É?ÏÅ Ð?ÐÜÃ? CGIÏÝ À?ÇÓÅØ ÃËÏûÐË ÀÀÐÜ ÅÞÁò ÍØÎ?Äé.
×èÀñÓ?ÐÊ ÅÞ ÊÞÊàÐÈÇÞ Ã?ÄÆÄé: ÈåÐ? Å?ÇÊÕôÈ? Ì?ÑèÏÅÌ-
×ÚÏô×á È?Å÷ ÖôÐÜÑ?È? ÅÏÐ?ÐÈÇÞ ÈÈÅõÄÒ 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/ ×ßÐ?Å?ÇÊÕôÈ?ÏÅ Ð?ÏÅÌ- ÈË×á Ð?ÐõÌâÀÅ
ÐæÄé. Í×Ñ? net.swÐ× ÃËÏûÐÊ ÊÈÕû
rdistÈ? Ë÷Ïû×ßÏ? ÐêÅÏÐÈÇÞ ÀÅÑ?ÏÒÄé. ÅÞÉ?ÒÀ
ÊÞÊàÐÜ ÃÂÎâÄé: ÎþÆËÀä ÐÜ ÅÞ ÁÈÑÆÈ? ×ßÃ?Ð× ÐêÏ?ÍÊÇ?Ïþ
URL ÁÈÑÆÇÞ Ï?Àñ×ßÄÒÀÅ? Ë÷ÏûÐêÏÅÀä DATA/
Å?ÇÊÕôÈ?È? À?ÓïÀý, URLÈÆÄé Ð?Ð×á CGI ÍÊÕ?ÈÃÖ?È? Í××ð×ßÀý
ÍÝÄé. ×èÀñÓ?ÐÊ ÄéÐÍÀ? ÀÀÄé: ÈåÐ? Ì-É?Ð× DocumentRootÏÅÌ- À?ÀÃÅØ
URL /net.sw/È? ÃËÊÞ ÀöÇÞ /e/netswÇÞ
Ð÷ÐëÌÊ×ßÁòÐ?×è Å?ÇÊÕôÈ?ÊÀ ÌÃÑ?ÖÔÐßÏÅ ÄéÐÍÀ? ÀÀÐÜ ÌÃÑ?×áÄé:
RewriteRule ^net.sw$ net.sw/ [R] RewriteRule ^net.sw/(.*)$ e/netsw/$1
ÓÉÉ?ÒÀ ÁäÔ?ÐÊ ÈÆÑ?ÈÇÏÅ ÍÍÇÅÍ?ÀÅ Î?ÄÒ ÏôÓËÐË Ð?×èÌ-
Ë÷Ïû×ïÄé! ÅÞÉ?ÒÀ ÁäÔ?ÐÜ Í×Ñ? ÐëÎ?ÐË ×áÄé. ÁçÈ?Àý Å?ÇÊÕôÈ?ÊÀ
ÌÃÑ?ÖÔÐß /e/netsw/.www/.wwwaclÏÅ ÀñÑ?Ð?ÐÞ
ÌÃÑ?ÐÜ Ã?ÏÒÄé:
Options ExecCGI FollowSymLinks Includes MultiViews RewriteEngine on # Îå ÊÞÊàÐÜ /net.sw/ ÇÞ Ñ?Áé×áÄé RewriteBase /net.sw/ # ÈåÐ? ÓæË?Ð? Å?ÇÊÕôÈ?È? # cgi ÍÊÕ?ÈÃÖ?ÇÞ Ð÷ÐëÌÊ×áÄé RewriteRule ^$ netsw-home.cgi [L] RewriteRule ^index\.html$ netsw-home.cgi [L] # ÊúÆ?ÏüÐ?ÀÅ Å?ÇÊÕôÈ?ÊÀ ÖôÐÜÑ?È? ÏôÓË×á ÀöÏü # ×ßÐ?Å?ÇÊÕôÈ?È? ÓïÓò×áÄé RewriteRule ^.+/(netsw-[^/]+/.+)$ $1 [L] # ÐÜÑ? Ð÷ÐëÌÊÐË ÈÆÔ?Äé 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] # ÄéÈ? cgi ÍÊÕ?ÈÃÖ?ÀÅ ÓÃÈ?×â # ×ßÐ?Å?ÇÊÕôÈ?ÀÅ ÃÂÎâÄé RewriteRule !^netsw-lsdir\.cgi.* - [C] RewriteRule (.*) netsw-lsdir.cgi/$1
×èÌ?ÐË Ð?×á Ø?Ö?:
-')ÀÅ
Î?Àý L (last) ×ÓÇÅÁçÀÅ ÐæÐÍÐË ÑæÈå×߯?!
(not) É?ÐêÏÝ C (chain) ×ÓÇÅÁçÈ? ÑæÈå×߯?mod_imapÐÈÇÞË÷Æ?ÅùÐÊ NCSA Ð?Ì-É?ÏÅÌ- ×?ÄûÐ?ÐÞ ÎÖÖÔÔÅ Ð?Ì-É?ÇÞ
ÐêÏ?ÍÊÇÄÀä ÏÕÀìÀÅÁö ÉéÆ?Äé. ÁçÇÅÌ- ÏÐÇÅÅØ NCSA
imagemap ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×á ÖôÐÜÑ?È? ×?ÄûÐ?ÐÞ
ÎÖÖÔÔÅ mod_imapÇÞ ÓÃÈ?×ßÁö ÉéÆ?Äé.
É?Ñ?ÄÒ imagemap ×ÑÇÞÁçÇ?ÐË
/cgi-bin/imagemap/path/to/page.mapÀ?
ÀÀÐÜ Ò?ÑÆ×ßÄÒ ×ßÐÜÖëÈÅÕ?ÀÅ ÈÉÄéÄÒ ÀÝÐÜÄé. ÎÖÖÔÔÅÄÒ
/path/to/page.mapÀ? ÀÀÐÊ ÏôÓËÐË ÉîÎÖÎï
×áÄé.
È?Å÷ ÏôÓËÏÅÌ- ÎåÊÞÊàÐË ÅÏÐ?ÐÈÇÞ Ñ?ÀÕ×ßÄÒ Ð?Ï? ÁäÔ?ÐË Ë÷Ïû×áÄé:
RewriteEngine on RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT]
ÀÅÂ? Ð?Ì-É?ÀÅ Ï?Ç? Å?ÇÊÕôÈ?ÏÅÌ- ÖÔÐßÐË Ó?ÎÖÎï ×â Æ?ÀÅ ÐæÄé. ÐÜ ÀöÏü MultiViewsÃ? ÄéÈ? ÉöÉÐÊ ÅÅÏ?ÐÜ ÎØÅØÄé.
Ï?Ç? Å?ÇÊÕôÈ?ÏÅÌ- ÖÔÐßÐË Ó?ÄÒ ÁäÔ?ÐË Ñ?Ñ? ×ÑÇÞÁçÇ?×áÄé.
RewriteEngine on
# ÈåÐ? custom/ÏÅÌ- Ó?Áö ÍÓÅÅ×ßÀý...
# ...Ó?ÐÈÈù ÃÅ!
RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir1/$1 [L]
# ÅÞÉ?ÒÀÇÞ pub/ÏÅÌ- Ó?Áö ÍÓÅÅ×áÄé...
# ...Ó?ÐÈÈù ÃÅ!
RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir2/$1 [L]
# È?Ó?ÐÈÈù ÄéÈ? AliasÃ? ScriptAlias Ñ?ÍÓÎþ ÅþÐÈÇÞ Ñ?×ð×áÄé.
RewriteRule ^(.+) - [PT]
ÏôÓËÅùÀ?ÏÅ Ë?ÕÒÑ?ÊÈÈ? Ð?Ñ?×ßÁòÐ?×è URLÏÅ Ñ?ÊÈÈ? ÐÞÔêÅ?×ßÄÒ ÉöÉÅÅ ÐæÄé. ÁçÇ?Ã? ÄìÑ? ÐÜ Ñ?ÊÈÈ? Ñ?ÀÕ×ßÁòÐ?×è È?Å÷ ÖôÐÜÑ?ÏÅ CGI wrapperÈ? Ë÷Ïû×ßÀý ÍÝÑ? ÎÚÄé.
Ð÷ÐëÌÊ ÁäÔ?ÐË Ë÷Ïû×ßÏ? Ë?ÕÒÑ?ÊÈÈ? ÓïÓò×ßÀý, ÓïÓò×á
Ñ?ÊÈÈ? Ã?ÑïÏÅ XSSIÃ? CGIÏÅÌ- Ë÷Ïû×ßÁòÐ?×è Ø?ÀöÊ?Ì?ÏÅ
Ð?Ðõ×áÄé. ÁçÇÅÌ- URL /foo/S=java/bar/ÄÒ
/foo/bar/ÇÞ Ê?Ø?Å×Àý STATUSÆ?ÄÒ
Ø?ÀöÊ?Ì? À?ÐË "java"ÇÞ ÌÃÑ?×áÄé.
RewriteEngine on RewriteRule ^(.*)/S=([^/]+)/(.*) $1/$3 [E=STATUS:$2]
ÀÅË?Ø?ÍÊÖ?È? Ë÷Ïû×ßÑ? ÎÚÀý ÀÀÐÊ ÔÔ×ËÕÝÇÞ DNS A
ÇÉÔêÅõÈ? ÌÃÑ?×ßÏ?
www.username.host.domain.comÐË
Ë÷ÏûÐêÐ× Ø?ÖôÐÜÑ?ÇÞ Ñ?À?×ßÀý ÍÝÄé.
HTTP/1.0 ÏôÓËÐ× ÀöÏü ÉöÉÐÜ Î?Ñ?ÈÈ, Host: HTTP
×üÄ?È? Ö?×ä×á HTTP/1.1 ÏôÓËÐÊ ÄéÐÍ ÁäÔ?ÐË Ë÷Ïû×ßÏ?
ÃËÊÞÐ?ÐÈÇÞ http://www.username.host.com/anypathÈ?
/home/username/anypathÇÞ Ð÷ÐëÌÊ×â Ì?
ÐæÄé:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2
Ñ?Ï? ÅÅÈîÐÞ ourdomain.com ÉëÏÅÌ- ÏôÓËÐÜ
ÅùÎþÏÐÈù Ø?Å?ÇÊÕôÈ? URLÐË ÄéÈ? Ð?Ì-É?
www.somewhere.comÐÈÇÞ È?ÄéÈ?ÇÊÌ××ßÁö
ÉéÆ?Äé. ÑÎÑÎ ÀÅË?Ø?ÍÊÖ? Ë÷ÏûÐõÌâÏÅÌ- Ë÷Ïû×áÄé.
Ð÷ÐëÌÊ ÑÆÀ×ÐË Ë÷Ïû×ßÈù ÅØÄé:
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$
RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L]
URL Ð÷ÐëÌÊÏÅ Äû×èÌ- Ð?Ì-É? AÏÅ ×èÄ÷ ÖÔÐßÐÜ Î?ÄÒ
ÀöÏü Ð?Ì-É? BÇÞ ÏôÓËÐË È?ÄéÐÜÇÊÌ××ßÄÒ ÉöÉÐË ÐêÑæ
ÉÀÎþÊËÄé. ÊÈÕû PerlÇÞ ÐëÌÊ×á ErrorDocument CGI ÍÊÕ?ÈÃÖ?È?
Ë÷Ïû×ßÑ?ÈÈ, mod_rewriteÈ? Ë÷Ïû×ßÄÒ
ÉöÉÅÅ ÐæÄé. ÁçÇ?Ã? ÌÊÄÙÐÊ ErrorDocument CGI ÍÊÕ?ÈÃÖ?ÊÈÄé
ÆÃÎþÑ?ÐË ÈýÍÙ×߯?!
ÓÉÉ?ÒÀ ÉöÉÐÊ Ê?È?Ñ?ÈÈ Ð?Ï?ÌÊÐÜ ÆÃÎþÑ?Àý ÏßÐ?×ßÑ? ÎÚÄé:
RewriteEngine on
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) http://webserverB.dom/$1
ÐÜ ÉöÉÐ× ÄìÑÅÐÊ DocumentRoot ÎØÏÅ ÐæÄÒ ÖôÐÜÑ?ÈÈ
ÀÅÄÙ×ßÄéÄÒ ÑÅÐÜÄé. (ÏÉÈ? ÅùÎþ Ø?Å?ÇÊÕôÈ? ÅþÐË Ð?×è)
ÑÆÀ×ÐË ÓïÀÅ×â Ì? ÐæÑ?ÈÈ, Ä? ÑÑÐÊ ÉöÉÐÜ ÐæÄé:
RewriteEngine on
RewriteCond %{REQUEST_URI} !-U
RewriteRule ^(.+) http://webserverB.dom/$1
mod_rewriteÐ× URL Ð?ÉöÒ?ÑÆ(look-ahead)È?
Ë÷Ïû×áÄé. ÁçÇÅÌ- È?Å÷ URLÏÅ ÅÏÐë×ßÀý ÎØÐ?×ßÄé. ÁçÇ?Ã?
È?Å÷ ÏôÓËÈÆÄé ÃËÊÞ ×ßÐ?ÏôÓËÐË ×áÉ? Ä? ×ßÁòÆ?É?ÏÅ Ð?Ì-É?
ÌÊÄÙÏÅ Î×ÏÅ×òÐË ÑèÄé. ÁçÇÅÌ- À-ÇÒ×á CPUÏÅÌ- Ð?Ì-É?È?
Í××ð×áÄéÈù Ë÷Ïû×߯?. ÔÔ×ËÕÝÀÅ ÄÐÈ?ÄéÈù ÓÉÉ?ÒÀ ÉöÉÐÜÃ?
Ä? Ã?ÐÊ ErrorDocument
CGI ÍÊÕ?ÈÃÖ?È? Ë÷Ïû×߯?.
ÀÅÂ? È?ÄéÐÜÇÊÌ××ßÄÒ URLÐË Ä? ÑÆÐ×â ×ÚÏôÀÅ ÐæÄé.
ÎÖÖÔÔÅ ÃËÊÞ URL escape ×äÌ?ÄÒ "url#anchor"
ÀÀÐÊ URLÐ× anchorÅÅ escape×áÄé. ÎÖÖÔÔÅÐ×
uri_escape() ×äÌ?ÄÒ ÏüÉÀÑ?Ðê(#)ÅÅ ÀÀÐÜ
escape×ßÉ×ÇÞ Ë÷Ïû×â Ì? Î?Äé. ÁçÇ?Èù ÎþÆËÀä ÐÜÇÁ URLÇÞ
È?ÄéÐÜÇÊÌ××â Ì? ÐæÃ??
Ñ?Ñ? È?ÄéÐÜÇÊÌ××ßÄÒ NPH-CGI ÍÊÕ?ÈÃÖ?È? Ë÷Ïû×á ×èÀñÓ?ÐÜ
×ÚÏô×ßÄé. escapeÈ? ×ßÑ? ÎÚÁòÆ?É?ÐÜÄé (NPH=non-parseable
headers). ÈåÐ? ÄéÐÍ Ì-É?ÌÃÑ?ÐË ×ßÏ? (Ð÷ÐëÌÊ ÁäÔ?Ð×
ÃÅÊÞÊàÏÅ Ë÷Ïû×èÎï ×áÄé) Ë?ÇÞÏþ URL scheme
xredirect:È? ÅÅÐä×áÄé:
RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \
[T=application/x-httpd-cgi,L]
ÁçÇ?Èù xredirect:ÇÞ ÍÓÐë×ßÄÒ È?Å÷ URLÐÊ
nph-xredirect.cgi ×ÑÇÞÁçÇ?ÐË Õû×ßÀä ÅØÄé.
×ÑÇÞÁçÇ?ÐÊ ÄéÐÍÀ? ÀÀÄé:
#!/path/to/perl
##
## nph-xredirect.cgi -- NPH/CGI script for extended redirects
## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##
$| = 1;
$url = $ENV{'PATH_INFO'};
print "HTTP/1.0 302 Moved Temporarily\n";
print "Server: $ENV{'SERVER_SOFTWARE'}\n";
print "Location: $url\n";
print "Content-type: text/html\n";
print "\n";
print "<html>\n";
print "<head>\n";
print "<title>302 Moved Temporarily (EXTENDED)</title>\n";
print "</head>\n";
print "<body>\n";
print "<h1>Moved Temporarily (EXTENDED)</h1>\n";
print "The document has moved <a HREF=\"$url\">here</a>.<p>\n";
print "</body>\n";
print "</html>\n";
##EOF##
ÁçÇ?Èù mod_rewriteÀÅ Ñ?Ñ? ÉîÑ?È?×ßÄÒ
È?Å÷ URL schemeÐÈÇÞ È?ÄéÐÜÇÊÌ××â Ì? ÐæÄé. ÏÉÈ? ÅùÎþ,
ÄéÐÍÀ? ÀÀÐÜ news:newsgroupÐÈÇÞ È?ÄéÐÜÇÊÌ××â
Ì? ÐæÄé
RewriteRule ^anyurl xredirect:news:newsgroup
xredirect:È? ÈÆÑ?ÈÇÏÅ Ø?Ðõ×èÎï ×ßÁòÆ?É?ÏÅ
ÁäÔ?ÏÅ [R]ÐÜÃ? [R,L]ÐË Ë÷Ïû×ßÈù
ÎØÅØÄé.http://www.perl.com/CPANÏÅ
ÐæÄÒ ÄûÄì×á CPAN (Comprehensive Perl Archive Network)ÐË
ÎÖÄÒÀÅ? ÐÜ ÑæÌâÄÒ ÌÌÀøÏÅ Ø?ÎþÑ? Ï?Ç? CPAN ÉÜÇ? FTP
Ì-É?Ñï Õ?Æ?ÐÜÎ?Ö?ÏÅ ÀÅÁþÐÜ ÐæÄÒ Ì-É?ÇÞ È?ÄéÐÜÇÊÌ××áÄé.
ÐÜÈ? FTP Ñ?Áé ÑïÀø Ì-ÊåÍÊÆ?Àý ×áÄé. CPANÐÊ CGI ÍÊÕ?ÈÃÖ?È?
Ë÷Ïû×ßÑ?ÈÈ, mod_rewriteÈ? Ë÷Ïû×ßÏ?
ÊåÍÑ×ßÀä ÈÈÅù Ì? ÐæÐËÁþ?
ÈåÐ? mod_rewrite 3.0.0 É?Ð?ÊÞÕÝ
È?ÄéÐÜÇÊÌ×ÏÅ "ftp:" schemeÐË Ë÷Ïû×â Ì?
ÐæÄé. ÄéÐÍÐÈÇÞ Õ?Æ?ÐÜÎ?Ö?Ð× ÓæË?Ð? ÅÅÈîÐÞÐË RewriteMapÀ? ÀÀÐÜ
Ë÷Ïû×ßÏ? Ð?ÔÅÈ? ÓïÑ?×â Ì? ÐæÄé. ÊÉÐòØ? Ï?ÐÞ ÁäÔ?ÏÅÌ-
ÓæË?Ð? ÅÅÈîÐÞÐË ÑïÀøÈÚÐ× ÕÀÇÞ Ë÷Ïû×áÄé.
RewriteEngine on
RewriteMap multiplex txt:/path/to/map.cxan
RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C]
RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L]
## ## map.cxan -- Multiplexing Map for CxAN ## de ftp://ftp.cxan.de/CxAN/ uk ftp://ftp.cxan.uk/CxAN/ com ftp://ftp.cxan.com/CxAN/ : ##EOF##
ÍÓÀ?ÏÅ Å?Æ? ÄéÈ? ÃËÏûÐË Ì-ÊåÍÊ×ßÄÒ ÀöÏü ÈÉÐÊ Ð?À?È?ÐêÄÒ
ÐñÍÓ Ö?ÊÀ×á ÖôÐÜÑ?ÇÞ È?ÄéÐÜÇÊÌ××ßÁòÐ?×è CGI ÍÊÕ?ÈÃÖ?È?
Ë÷Ïû×áÄé. mod_rewriteÇÞÄÒ ÎþÆËÀä
×â Ì? ÐæÄÒÀÅ?
Ð÷ÐëÌÊ ÑÆÀ×ÏÅÌ- Ë÷Ïû×â Ì? ÐæÄÒ Ï?Ç? TIME_xxx
Ê?Ì?ÀÅ ÐæÄé. Ê?Ì?ÏÝ Ö?ÊÀ×á Ë÷Ð?Ì?Ì- ÊåÁÃ
<STRING, >STRING,
=STRINGÐË Ë÷Ïû×ßÏ? ÍÓÀ?ÏÅ Å?Æ? È?ÄéÐÜÇÊÌ××â
Ì? ÐæÄé:
RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^foo\.html$ foo.day.html
RewriteRule ^foo\.html$ foo.night.html
URL foo.htmlÐË ÏôÓË×ßÈù
07:00-19:00 ÅÏÎØ foo.day.html
ÃËÏûÐË Ì-ÊåÍÊ×ßÀý, Ã?ÈãÑ? ÍÓÀ? ÅÏÎØ
foo.night.html ÃËÏûÐË Ì-ÊåÍÊ×áÄé. Ø?ÖôÐÜÑ?ÏÅÌ-
Ë÷Ïû×ßÁò ÑÑÐÊ ÁòÄÙÐÜÄé...
Ï?Ç? .html ÖÔÐßÐË .phtmlÇÞ
Ê?Ø?×ßÄÒ Åþ document.YYYYÈ?
document.XXXXÇÞ ÐÜÐ?×áØÔ Ï?Ø?Ø?(backward
compatibility) URLÐË (ÀÅË?Ð?ÐÈÇÞ ÑÈÐ÷×ßÀä) ÈÈÅù Ì?
ÐæÃ??
ÐÜÈ?ÐË ÁòÊËÐÜÈ?ÐÈÇÞ Ð÷ÐëÌÊ×áØÔ Ë?ÇÞÏþ Ø?ÐõÐêÈ? ÀÅÑ? ÖÔÐßÐÜ ÐæÄÒÑ? ÀÛË÷×áÄé. ÐæÄéÈù Áç ÖÔÐßÈýÐË Ë÷Ïû×ßÀý, Î?ÐÈÈù URLÐË Ï?ÇÅ Ë?ÕÒÇÞ Ð÷ÐëÌÊ×áÄé.
# É?Ì-.html ÐÜ Î?Àý
# É?Ì-.phtml ÈÈ ÐæÄÒ ÀöÏü
# É?Ì-.html ÐË É?Ì-.phtml ÇÞ
# Ð÷ÐëÌÊ×ßÄÒ Ï?Ø?Ø? ÁäÔ?
RewriteEngine on
RewriteBase /~quux/
# ÁòÊËÐÜÈ?ÐË Ó?Àý, Ó?ÎâÄéÄÒ Ë÷Í×ÐË ÁòÎÿ×áÄé
RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]
# ÖÔÐßÐÜ ÐæÄéÈù É?Ì-.phtml ÇÞ Ð÷ÐëÌÊ×áÄé
RewriteCond %{REQUEST_FILENAME}.phtml -f
RewriteRule ^(.*)$ $1.phtml [S=1]
# ÎÖÄßÈù ÎåÏÅÌ- Ó?ÐÊ ÁòÊËÐÜÈ?ÐË Å×ÅÉÈÀÄé
RewriteCond %{ENV:WasHTML} ^yes$
RewriteRule ^(.*)$ $1.html
ÓæÁé foo.htmlÐË bar.htmlÇÞ
Ê?Àö×ßÀý Ï?Ø?Ø?ÌÊÐË Ð?×è ÐÜÐ? URLÐË ÀøÌã Ñ?À?×ßÀý
ÍÝÄéÀý ÀÅÑ?×ßÐê. Ë÷ÏûÐêÄÒ ÐÜÐ? URLÐÜ Ê?ÀöÅ×Î?ÄéÄÒ
Ë÷Í×ÐË Ä?ÔÅÓ?Ñ? È?×áÄé.
ÄéÐÍ ÁäÔ?ÐÈÇÞ ÐÜÐ? URLÐË ÃËÊÞÐ?ÐÈÇÞ Ë?ÇÞÏþ URLÇÞ Ð÷ÐëÌÊ×áÄé:
RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo\.html$ bar.html
ÄéÍÓ foo.htmlÐË bar.htmlÇÞ
Ê?Àö×ßÀý Ï?Ø?Ø?ÌÊÐË Ð?×è ÐÜÐ? URLÐË ÀøÌã Ñ?À?×ßÀý
ÍÝÄéÀý ÀÅÑ?×ßÐê. ÁçÇ?Ã? ÐÜÑ?ÄÒ ÐÜÐ? URLÐË Ë÷Ïû×ßÈù
Ë÷ÏûÐêÏÅÀä Ë?ÇÞÏþ URLÐË Ø?Ö?ÇÞ ÎÛÇÑÑèÄé. Ñÿ, ÊúÆ?ÏüÐ?
ÑæÌâÓ?ÐÜ Ê?×áÄé.
Ë?ÇÞÏþ URLÇÞ HTTP È?ÄéÐÜÇÊÌ××ßÄé. ÁçÇ?Èù ÊúÆ?ÏüÐ?ÀÅ Ë?ÇÞÏþ URLÈ? ÊÈÐÜÀý Ê?ÀöË÷Í×ÐË Ë÷ÏûÐêÀÅ ÎÛÀäÅØÄé:
RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo\.html$ bar.html [R]
ÓæÌâ×á ÑïÏô×á ÓæË?Ð? ÖôÐÜÑ?ÄÒ ÊúÆ?ÏüÐ?ÏÅ ÓæÐ?Ø-ÅØ ÃËÏûÐÈÇÞ Ì-ÊåÍÊ×èÎï×â ÀöÏüÀÅ ÐæÄé. Ñÿ, ÓæÍÕ Netscape ÊúÆ?ÏüÐ?ÏÅÀäÄÒ ÓæË?Ð× É?Ð?ÐË, Lynx ÊúÆ?ÏüÐ?ÏÅÀäÄÒ ÓæÐ? É?Ð?ÐË, Ã?ÈãÑ? ÊúÆ?ÏüÐ?ÏÅÄÒ Ö?ÁåÐ?ÐÞ É?Ð?ÐË Ñ?À?×áÄé.
ÊúÆ?ÏüÐ?ÀÅ ÃËÏû×?Ë?ÐË Ð?×è ÐêÍÕÐ× ÑÎÇ?ÏÅ Äû×á Ñ?ÊÈÈ?
Ñ?À?×ßÑ? ÎÚÁòÆ?É?ÏÅ ÃËÏû×?Ë?ÐË Ë÷Ïû×â Ì? Î?Äé. ÄûÍÕ
HTTP "User-Agent" ×üÄ?È? Ë÷Ïû×áÄé. ÄéÐÍ ÁäÔ?ÐÊ HTTP
"User-Agent" ×üÄ?ÀÅ "Mozilla/3"ÐÈÇÞ ÍÓÐë×ßÈù
foo.html ÖôÐÜÑ?È? foo.NS.htmlÇÞ
Ð÷ÐëÌÊ×ßÀý Ð÷ÐëÌÊÐË ÑïÄì×áÄé. ÊúÆ?ÏüÐ?ÀÅ "Lynx"Ã?
"Mozilla" É?Ð? 1 Ø?ÐÊ 2Æ?Èù URLÐÊ
foo.20.htmlÐÜ ÅØÄé. Ã?ÈãÑ? ÊúÆ?ÏüÐ?ÄÒ
foo.32.html ÖôÐÜÑ?È? ÉîÄÒÄé. ÎÖÇÅ ÁäÔ?ÐÜ
ÐÜ ÐëÎ?ÐË ×áÄé:
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^foo\.html$ foo.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^foo\.html$ foo.20.html [L]
RewriteRule ^foo\.html$ foo.32.html [L]
ÏìÊÞ Ø?ÍÊÖ?ÏÅ ÏüÈ? Ë÷ÐÜÖ?ÇÞ ÀÅÑ?ÏÐÀý ÍÝÐÊ ÑÑÐÊ
Ð?ÖôÐÜÑ?ÀÅ ÐæÄéÀý ÀÅÑ?×ßÐê. FTP Ì-É?Ð× ÀöÏü Ñ?Ñ? ÏìÊÞ
ÐêÇñÐ× ÓæÍÕÊÉË÷ÊËÐË Ð?Ñ?×ßÄÒ mirror ×ÑÇÞÁçÇ?ÐË
Ë÷Ïû×â Ì? ÐæÀý, Ð?Ì-É?Æ?Èù HTTPÇÞ ÊåÍÑ×á ÐëÎ?ÐË ×ßÄÒ
webcopy ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×â Ì? ÐæÄé. ÁçÇ?Ã?
ÅÞ ÉöÉ È?ÅÞ ÄìÑÅÐÜ ÐæÄé: ÊÉË÷ÊËÐÊ ÀÅÂ?ÎÏ ×ÑÇÞÁçÇ?ÐË
Í××ð×èÑé Æ?ÈÈ ÓæÍÕÖ×ÐÈÇÞ Ð?Ñ?ÅØÄé. Ñ?Ñ? ÁÈÌÊ×èÎï×ßÄÒ
Ñ?Ð?ÐÞ ÉÜÇ?ÀÅ ÎÖÄ߯?Èù ÑÑÀêÄé. ÄûÍÕ (ÏìÊÞ Ø?ÍÊÖ?ÏÅÌ-
ÐêÇñÀÅ ÀËÍÕÅ×Èù) ×ÚÏô×âÆ? ÐêÅÏÐÈÇÞ ÐêÇñÈ? ÀËÍÕ×ßÄÒ
ÅÏÐ? ÉÜÇ?ÀÅ ×ÚÏô×ßÄé.
ÐÜÈ? Ð?×è Proxy Throughput ÁòÄÙÐË (×ÓÇÅÁç
[P]) Ë÷Ïû×ßÏ? ÏìÊÞ Ð?ÖôÐÜÑ? Ø?ÐÊ ÏìÊÞ
Ð?À?À? Ð?ÓÌÈ? ÏüÈ? ÐÜÈ?À?À?ÐÈÇÞ ÄûÐÐ×áÄé:
RewriteEngine on RewriteBase /~quux/ RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P]
RewriteEngine on RewriteBase /~quux/ RewriteRule ^usa-news\.html$ http://www.quux-corp.com/news/index.html [P]
RewriteEngine on RewriteCond /mirror/of/remotesite/$1 -U RewriteRule ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1
Í×Ñ? ÐêÇñÈ? ÉöØ-Ê?ÐÜ ÊÈØ?×ßÄÒ (ÃËÊÞ) ÐÞÖ?Æ?Ãí Ð?Ì-É?ÏÅ
(www2.quux-corp.dom) Ð?Ðõ×ßÈùÌ-, ÁòÎ?Ð×
(ÏìÊÞ) ÐÞÕÝÃí Ð?Ì-É?È? (www.quux-corp.dom)
Í××ð×ßÄÒ ÀÝÓÃÇà ÊÈÐÜÀä ×áÄé. ÏìÊÞ Ð?Ì-É?ÄÒ ÏôÓË×á
ÐêÇñÈ? ÃËÊÞ Ð?Ì-É?ÏÅÌ- ÀÅÑ?ÏÒÄé.
ÈåÐ? ÉöØ-Ê?ÐÜ ÃËÊÞ Ð?Ì-É?È? ÊÈØ?×ßÀý ÏìÊÞ Ð?Ì-É?ÈÈÐÜ ÃËÊÞ Ð?Ì-É?ÏÅÌ- ÐêÇñÈ? Î?ÐË Ì? ÐæÀä ×áÄé. ÄéÐÍÀ? ÀÀÐÜ ÖàÕÆ×ÚÕÝÈÅ ÉöØ-Ê?ÐË ÌÃÑ?×áÄé:
ALLOW Host www.quux-corp.dom Port >1024 --> Host www2.quux-corp.dom Port 80 DENY Host * Port * --> Host www2.quux-corp.dom Port 80
Í×Ñ? ÌÃÑ?É?ÉÏÅ ÎÛÈÒÀä ÀýÓÔÆ?. Î?ÄÒ ÐêÇñÈ? ÃËÊÞÐ?ÐÈÇÞ
proxy throughput ÁòÄÙÐË Õû×è ÏôÓË×ßÄÒ
mod_rewrite ÁäÔ?ÐË ÐëÌÊ×áÄé:
RewriteRule ^/~([^/]+)/?(.*) /home/$1/.www/$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/home/([^/]+)/.www/?(.*) http://www2.quux-corp.dom/~$1/pub/$2 [P]
www.foo.comÐ× ÕûÍÕÇ?ÐË
www[0-5].foo.com (Óá Ì-É? 6Äû)ÐÈÇÞ ÊàËú×ßÀý
ÍÝÄé. ÎþÆËÀä ×ßÄÒÀÅ?
ÈÕÏü ÄéÎ÷×á ÉöÉÐÈÇÞ ÐÜ É?Ñ?È? ×èÀñ×â Ì? ÐæÄé.
ÈåÐ? DNSÈ? Ë÷Ïû×á Ðï ÎÛÇÑÑ? ÉöÉÐË ÌÃÈý×ßÀý,
mod_rewriteÈ? Ë÷Ïû×ßÄÒ ÀöÏüÈ? ËüÖüÊÈÐê:
ÀÅÐõ À?Äì×á ÇÞÅõÉûÇÁÍÜ ÉöÉÐÊ BINDÐ×
DNS round-robin ÉöÍÔÐË Ë÷Ïû×ßÄÒ ÀÝÐÜÄé. ÄéÐÍÀ?
ÀÀÐÜ DNS A(address) ÇÉÔêÅõÏÅ
www[0-9].foo.comÐË ÌÃÑ?×áÄé.
www0 IN A 1.2.3.1 www1 IN A 1.2.3.2 www2 IN A 1.2.3.3 www3 IN A 1.2.3.4 www4 IN A 1.2.3.5 www5 IN A 1.2.3.6
ÁçÈ?Àý ÄéÐÍ ×çÈåÐË ÓïÀÅ×áÄé:
www IN CNAME www0.foo.com.
IN CNAME www1.foo.com.
IN CNAME www2.foo.com.
IN CNAME www3.foo.com.
IN CNAME www4.foo.com.
IN CNAME www5.foo.com.
IN CNAME www6.foo.com.
ÐïÈ?ÅØ ÀÝÓÃÇà ÊÈÐÜÑ?ÈÈ, Í×Ñ?ÇÞ BINDÐ×
Ð×ÅÅÅØ ÁòÄÙÐÜÄé. ÐÜÑ? www.foo.comÐË
Ó?ÐÈÈù, BINDÄÒ ÈÕÉ? Ì?Ì-È? ÑÆÁíÎÏ
ÉéÂóÀÅÈ÷ www0-www6ÐË ÉíØ?×áÄé. ÁçÇÅÌ-
Õ?Æ?ÐÜÎ?Ö?ÅùÐË Ï?Ç? Ì-É?ÇÞ ÊàËú×áÄé. ÁçÇ?Ã? DNS
ÀÛË? ÀñÀ?ÀÅ ÃçÖ?Ï?Ð× ÄéÈ? ÃçÐãÌ-É?ÏÅ ÔÃÍ?Å×Ï?
www.foo.comÐË Ó?ÐÊ ÀñÀ?ÀÅ Ö?Ñ?
wwwN.foo.comÐÜÈù Õ?Æ?ÐÜÎ?Ö?Ð× ÄéÐÍ
ÏôÓËÅùÅÅ ÀÀÐÊ wwwN.foo.comÐÈÇÞ
ÊÈÃËÑ?ÁòÆ?É?ÏÅ ÏßÊ?×á ÇÞÅõÉûÇÁÍÜ ÁòÉÐÜ ÎÖÄäÐË
ÑæÐ××߯?. ÁçÇ?Ã? Õ?Àä ÊÈÈù ÏôÓËÐÜ Ï?Ç? Ð?Ì-É?ÏÅ
ÊàËúÅ×É×ÇÞ ØÏÀ?ÀÅ ÑÑÄé.
http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.htmlÏÅ
ÐæÄÒ lbnamed ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×ßÏ?
Ñ?ÁÃ×á DNSÁòÉí ÇÞÅõÉûÇÁÍÜÐË ×â Ì? ÐæÄé. DNSÀÅ
Í×Ñ? ÇÞÅõÉûÇÁÍÜÐË ×ßÅÅÇß ÈÈÅõÄÒ Ï?Ç? ÅÅÁÈÏÝ Perl
5 ×ÑÇÞÁçÇ?ÐÜÄé.
ÐÜ ÉöÉÐÊ mod_rewriteÏÝ proxy
throughput ÁòÄÙÐË Ë÷Ïû×áÄé. ÈåÐ? DNSÏÅ ÄéÐÍ ×çÈåÐË
Ë÷Ïû×ßÏ? www0.foo.comÐÜ Í×Ñ?
www.foo.comÐË Ð?Äó×ßÀä ×áÄé
www IN CNAME www0.foo.com.
ÁçÈ?Àý www0.foo.comÐË ×ÑÇßÍÓÐ?Ïû
Ì-É?ÇÞ Ê?Àö×áÄé. Ñÿ, URLÐË ÉîÐÈÈù Ì-É?ÄÒ ÃËÊÞ
×ÑÇßÍÓÈ? Õû×è ÄéÈ? 5Äû Ì-É?Ñï (www1-www5)
×áÄûÇÞ ÊÈÃËÁòÈÈ ×áÄé. ÐÜÈ? Ð?×è ÈåÐ? È?Å÷ URLÐË
ÇÞÅõÉûÇÁÍÜ ÍÊÕ?ÈÃÖ? lb.plÇÞ ÊÈÃËÄÒ
ÁäÔ?ÐË ÈÈÅ÷Äé.
RewriteEngine on
RewriteMap lb prg:/path/to/lb.pl
RewriteRule ^/(.+)$ ${lb:$1} [P,L]
lb.plÐË ÐëÌÊ×áÄé:
#!/path/to/perl
##
## lb.pl -- ÇÞÅõÉûÇÁÍÜ ÍÊÕ?ÈÃÖ?
##
$| = 1;
$name = "www"; # ÁòÊË Ø?ÍÊÖ?Èý
$first = 1; # ÓÉÉ?ÒÀ Ì-É? (ÐêÍÕÐÜ 0ÐÜÁò Æ?É?ÏÅ, 0ÐË Ë÷Ïû×ßÑ? ÎÚÄÒÄé)
$last = 5; # round-robinÏÅÌ- ÈÆÑ?ÈÇ Ì-É?
$domain = "foo.dom"; # ÅÅÈîÐÞÈý
$cnt = 0;
while (<STDIN>) {
$cnt = (($cnt+1) % ($last+1-$first));
$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
print "http://$server/$_";
}
##EOF##
www0.foo.comÏÅ ÊÞÄóÐÜ ÀÅÑ?ÎÚÄÒÀÅ?
ÉÀÇà, ÊÞÄóÐÜ ÅØÄé. ÁçÇ?Ã? ÄìÌ?×á proxy throughput
ÏôÓËÈÈ ×ßÁòÆ?É?ÏÅ Á?Ò?Äé! È?Å÷ SSI, CGI, ePerl
ÅþÐÊ Ð?Ð?ÐÈÇÞ ÄéÈ? Ì-É?ÀÅ ÓÃÈ?×áÄé. ÐÜÀÝÐÜ ×éÍÙÐÜÄé.×ßÅõÏ?ÎþÈ? Ë÷Ïû×á ×èÀñÓ?ÅÅ ÐæÄé. CiscoÄÒ TCP/IP Ì?ÑèÏÅÌ- ÇÞÅõÉûÇÁÍÜÐË ×ßÄÒ LocalDirectorÆ?ÄÒ Á?ÉÀÐË Ö×Äé. Í×Ñ?ÇÞÄÒ Ð?Ì-É?ÁÊ ÎåÄìÏÅ Ð?ÔÅ×ßÄÒ ÐßÑÎÐ× ØÈÇÞÌ?Ñè ÀäÐÜÖ?Ï?ÐÜÄé. ÐêÁíÐÜ ÓöÊà×ßÀý ÀýÌÊÄÙ ×èÀñÓ?ÐÜ ×ÚÏô×ßÄéÈù ÐÜÀÝÐË Ë÷Ïû×߯?.
ÃçÖ?Ï?ÏÅÄÒ ÈêÑ? CGI ×ÑÇÞÁçÇ?ÅùÐÜ ÈÉÄé. ÁçÇ?Ã? Ë÷Ïû×ßÁò
É?ÀÕÇ?Ï?Ì- ÈÉÐÊ Ð?À?È?ÐêÀÅ Ë÷Ïû×ßÑ? ÎÚÄÒÄé. ÎÖÖÔÔÅÐ×
MIME-typeÏÅ Å?È? Action ×êÅùÇ? ÁòÄÙÅÅ CGI ×ÑÇÞÁçÇ?ÐÜ
Ö?ÊÀ×á URLÐË (Ñ?Ø?Ø? PATH_INFOÏÝ
QUERY_STRINGS) ×ÑÇÞÁçÇ?Ð× ÐäÇÒÐÈÇÞ Ë÷Ïû×ßÑ?
ÎÚÐË Æ?ÈÈ Ð?Ð×ßÄé. ÈåÐ?, Ø?ÐõÐêÀÅ (secure CGIÈ? ÑéÏ?)
.scgiÐÞ ÖÔÐßÐË Ð?Èý×á cgiwrap
×ÑÇÞÁçÇ?ÐÈÇÞ ÓÃÈ?×ßÁòÐ?×è Ë?ÇÞÏþ typeÐË ÌÃÑ?×áÄé.
É?Ñ?ÄÒ (Ð?ÏÅÌ- ÊË) ÐßÀ?ÅØ URL ÁÈÑÆÈ? Ë÷Ïû×ßÄÒ ÀöÏü
Ë÷ÏûÐê Ø?Å?ÇÊÕôÈ?ÀÅ /u/user/foo/bar.scgiÀÀÐÊ
URLÐÞ ÑÅÐÜÄé. cgiwrapÄÒ
/~user/foo/bar.scgi/ ×?ÍÔÐ× URLÐË
Ï?×ßÁòÆ?É?ÐÜÄé. ÄéÐÍ ÁäÔ?ÐÜ É?Ñ?È? ×èÀñ×áÄé:
RewriteRule ^/[uge]/([^/]+)/\.www/(.+)\.scgi(.*) ... ... /internal/cgi/user/cgiwrap/~$1/$2.scgi$3 [NS,T=application/x-http-cgi]
ÐÜÑ? ÄéÈ? ÈêÑ? ×ÑÇÞÁçÇ?, (URL ×ßÐ?Ö?È?ÏÅ Äû×á
access.logÈ? ÓòÇÒ×ßÄÒ) wwwlogÏÝ
(URL ×ßÐ?Ö?È?ÏÅ GlimpseÈ? Í××ð×ßÄÒ) wwwidxÀÅ
ÐæÄéÀý ÀÅÑ?×ßÐê. ÏüÈ?ÄÒ ×ÑÇÞÁçÇ?ÏÅÀä ÐëÎ?×â ÄûË?ÐÞ
URL ÏÅÏ?ÐË ÎÛÇÑÑðÎï ×áÄé. ÁçÇ?Ã? ÏôÓË×âÆ?ÈÆÄé ×çË?
Ð?ÎþÑðÎï ×ßÁòÆ?É?ÏÅ Á?Â?×ßÑ? ÎÚÄé. Ñÿ, ÊÈÕû
/u/user/foo/ÏÅ Äû×è swwidx
×ÑÇÞÁçÇ?ÐË Í××ð×áÄéÈù ÄéÐÍÀ? ÀÀÐÊ ÈÅÕ?È? Ë÷Ïû×áÄé
/internal/cgi/user/swwidx?i=/u/user/foo/
Á?Â?×ßÑ? ÎÚÄé. ÈÅÕ?ÏÅ ÏÅÏ?Ð× Ð?ÔÅÏÝ CGI Ð?ÔÅÈ? È?ÅÞ Ð?ÎþÎï ×ßÁòÆ?É?ÐÜÄé. ÏÅÏ?ÐË Ð÷ÁÈÌÊ×áÄéÈù Ï?Ç? ×ßÐÜÖëÈÅÕ?È? Ì?Ñ?×ßÄÒÅ? ÈÉÐÊ ÍÓÀ?ÐÜ ÀÙÈÁ ÀÝÐÜÄé.
×èÀñÓ?ÐÊ ÐêÅÏÐÈÇÞ Ð?Ð×á CGIÈ? Í××ð×ßÄÒ Ë?ÇÞÏþ Ö?ÊÀ×á URL ×?ÍÔÐË ÈÈÅõÄÒ ÀÝÐÜÄé. ÄéÐÍÀ? ÀÀÐÜ ÌÃÑ?×áÄé:
RewriteRule ^/([uge])/([^/]+)(/?.*)/\* /internal/cgi/user/wwwidx?i=/$1/$2$3/ RewriteRule ^/([uge])/([^/]+)(/?.*):log /internal/cgi/user/wwwlog?f=/$1/$2$3
ÐÜÑ? /u/user/foo/ÐË ÀÛË?×ßÄÒ ÈÅÕ?ÄÒ
ÄéÐÍÀ? ÀÀÄé
HREF="*" /u/user/foo/* (???)
ÃËÊÞÐ?ÐÈÇÞ ÄéÐÍÀ? ÀÀÐÜ ÐêÅÏÊ?Ø?ÅØÄé
/internal/cgi/user/wwwidx?i=/u/user/foo/
ÀÀÐÊ ÉöÉÐÈÇÞ ÈÅÕ? ÅêÏÅ :logÈ? Ë÷Ïû×ßÏ?
Ñ?Áé ÇÞÁç CGI ×ÑÇÞÁçÇ?ÐË Í××ð×â Ì? ÐæÄé.
ÎþÆËÀä ÊúÆ?ÏüÐ?ÏÝ Ë÷ÏûÐêÀÅ È?È?Àä ÐêÏ?ÍÊÇÄÀä Ñ?Ð?
ÖôÐÜÑ? foo.htmlÐË ÅÏÐ?ÐÞ foo.cgiÇÞ
Ê?Àö×â Ì? ÐæÃ?.
URLÐË CGI ÍÊÕ?ÈÃÖ?ÇÞ Ð÷ÐëÌÊ×ßÀý, MIME-typeÐË Ì?Ñ?×ßÏ?
CGI ÍÊÕ?ÈÃÖ?ÇÞ Í××ð×ßÀä ×áÄé. ÁçÇÅÌ-
/~quux/foo.htmlÈ? ÏôÓË×ßÈù ÃËÊÞÐ?ÐÈÇÞ
/~quux/foo.cgiÈ? Í××ð×ßÀä ÅØÄé.
RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi]
ÐÜ ÉöÉÐÊ Í×ÇÞ ÊåÁòÐÜÄé: ÅÏÐ?ÐÈÇÞ ÖôÐÜÑ?È? ËÌÊ×ßÑ?ÈÈ, Ñ?Ð?ÐÈÇÞ ÖôÐÜÑ?È? Ì-ÊåÍÊ×áÄé. Ñÿ, ÖôÐÜÑ?ÄÒ Ì?Ì?×ßÀä (ÖÔÐßÍÓÍÊÕëÏÅÌ- ÐàÐÊ ÃËÏûÐË ÁçÄûÇÞ) Ñ?Ð? ÖôÐÜÑ?ÇÞ Ð?ÄîÅ×Ñ?ÈÈ, Î?ÐË ÀöÏü Ð?Ì-É?ÀÅ ÅÏÐ?ÐÈÇÞ ËÌÊ×áÄé. ÁçÇ?Èù Ä?ÀÅ (Ø?ÐÊ cron ÐëÎ?ÐÜ) Ñ?Ð? ÔÑÕéÓ?È? Ñ?ÏüÑ?ÎÚÄÒ ×á CGIÀÅ ËÌÊ×á ÖôÐÜÑ?È? Ñ?Ð?ÐÈÇÞ Ì-ÊåÍÊ×áÄé. ÔÑÕéÓ?È? Ñ?ÏüÈù ÃËÏûÐË ÀËÍÕ×áÄé.
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^page\.html$ page.cgi [T=application/x-httpd-cgi,L]
Ï?ÁòÌ- page.htmlÈ? ÏôÓË×âÆ?
page.htmlÐÜ Î?ÀÕÃ? ÖÔÐßÕ?ÁòÀÅ 0ÐÞ ÀöÏü
ÃËÊÞÐ?ÐÈÇÞ page.cgiÈ? Í××ð×áÄé. Ï?ÁòÌ-
ÊåÀñÐÊ page.cgiÀÅ ÐßÉíÐ?ÐÞ CGI ÍÊÕ?ÈÃÖ?ÏÝ
ÀÀÐÜ STDOUTÏÅ ÓòÇÒ×ßÀý, ÓïÀÅÇÞ ÓòÇÒÐË
page.html ÖÔÐßÏÅ Ð?ÄÒÄé. ×áÉ? Í××ð×áØÔ
Ì-É?ÄÒ page.htmlÐ× Ñ?ÊÈÈ? ÊÈÃÍÄé. Ð?À?È?ÐêÀÅ
À-Ð÷ÇÞ ÃËÏûÐË ÀËÍÕ×ßÀý ÍÝÄéÈù, (ÊÈÕû cron ÐëÎ?ÐÜ)
page.htmlÐË Ñ?ÏüÁòÈÈ ×ßÈù ÅØÄé.
ÊÉÐò×á Ð?ÖôÐÜÑ?È? ÈÈÅùÆ? ÖýÑÐêÀÅ ÃËÏûÐË Ì?Ñ?×â Æ?ÈÆÄé ÐêÅÏÐÈÇÞ ÖôÐÜÑ?È? Ë?ÇÞ ÀýÔ?×ßÄÒ Ð?ÊúÆ?ÏüÐ?ÀÅ ÐæÐÈÈù Î?ÈÆÃ? ÑÑÐËÁþ? ÊâÀÅÄÙ×áÀÅ?
ÀÅÄÙ×ßÄé! MIME multipart ÁòÄÙÀ? Ð?Ì-É? NPH ÁòÄÙ,
mod_rewriteÐ× URL ÑÆÐë ÄÙÇÒÐË Àñ×å×ßÈù
ÅØÄé. ÈåÐ?, Ë?ÇÞÏþ URL ÁòÄÙÐË ÈÈÅ÷Äé: URLÏÅ
:refreshÈ? ÓïÀÅ×ßÁòÈÈ ×ßÈù ÖÔÐßÍÓÍÊÕëÏÅÌ-
Ì?Ñ?ÅÙ Æ?ÈÆÄé Ë?ÇÞ ÀýÔ?×áÄé.
RewriteRule ^(/[uge]/[^/]+/?.*):refresh /internal/cgi/apache/nph-refresh?f=$1
ÐÜÑ? ÄéÐÍ URLÏÅ Ñ?Áé×ßÈù
/u/foo/bar/page.html:refresh
ÄéÐÍ URLÐË ÃËÊÞÐ?ÐÈÇÞ ÊÞÈ?Äé
/internal/cgi/apache/nph-refresh?f=/u/foo/bar/page.html
ÐÜÑ? NPH-CGI ÍÊÕ?ÈÃÖ?ÈÈ ÃÂÎâÄé. ÊÈÕû "ÅÆÐêÏÅÀä Ï?ÍÐÐÈÇÞ ÃÂÀìÅâ"ÐÜÆ?Àý ÈË×ßÑ?ÈÈ ;-) Ã?ÄÒ ÐÜÀÝÅÅ Ñ?À?×áÄé.
#!/sw/bin/perl
##
## nph-refresh -- NPH/CGI script for auto refreshing pages
## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved.
##
$| = 1;
# split the QUERY_STRING variable
@pairs = split(/&/, $ENV{'QUERY_STRING'});
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/A-Z/a-z/;
$name = 'QS_' . $name;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
eval "\$$name = \"$value\"";
}
$QS_s = 1 if ($QS_s eq '');
$QS_n = 3600 if ($QS_n eq '');
if ($QS_f eq '') {
print "HTTP/1.0 200 OK\n";
print "Content-type: text/html\n\n";
print "<b>ERROR</b>: No file given\n";
exit(0);
}
if (! -f $QS_f) {
print "HTTP/1.0 200 OK\n";
print "Content-type: text/html\n\n";
print "<b>ERROR</b>: File $QS_f not found\n";
exit(0);
}
sub print_http_headers_multipart_begin {
print "HTTP/1.0 200 OK\n";
$bound = "ThisRandomString12345";
print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
&print_http_headers_multipart_next;
}
sub print_http_headers_multipart_next {
print "\n--$bound\n";
}
sub print_http_headers_multipart_end {
print "\n--$bound--\n";
}
sub displayhtml {
local($buffer) = @_;
$len = length($buffer);
print "Content-type: text/html\n";
print "Content-length: $len\n\n";
print $buffer;
}
sub readfile {
local($file) = @_;
local(*FP, $size, $buffer, $bytes);
($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
$size = sprintf("%d", $size);
open(FP, "<$file");
$bytes = sysread(FP, $buffer, $size);
close(FP);
return $buffer;
}
$buffer = &readfile($QS_f);
&print_http_headers_multipart_begin;
&displayhtml($buffer);
sub mystat {
local($file) = $_[0];
local($time);
($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
return $mtime;
}
$mtimeL = &mystat($QS_f);
$mtime = $mtime;
for ($n = 0; $n < $QS_n; $n++) {
while (1) {
$mtime = &mystat($QS_f);
if ($mtime ne $mtimeL) {
$mtimeL = $mtime;
sleep(2);
$buffer = &readfile($QS_f);
&print_http_headers_multipart_next;
&displayhtml($buffer);
sleep(5);
$mtimeL = &mystat($QS_f);
last;
}
sleep($QS_s);
}
}
&print_http_headers_multipart_end;
exit(0);
##EOF##
ÀÅË?Ø?ÍÊÖ?ÀÅ ÈþÀÃÈÈ ÐæÄéÈù ÎÖÖÔÔÅÐ× <VirtualHost>
ÁòÄÙÐÜ Ðï ÅÏÐë×áÄé. ÁçÇ?Ã? ÀÅË?Ø?ÍÊÖ?ÀÅ Ì?ÉùÀÃ ÐæÄÒ
ISPÆ?Èù ÐÜ ÁòÄÙÐÜ ÓæÌÁÐÊ ÎÖÄßÄé.
ÐÜ ÁòÄÙÐË Ñ?À?×ßÇÑÈù Proxy Throughput
ÁòÄÙÐË (×ÓÇÅÁç [P]) Ë÷Ïû×ßÏ? ÏìÊÞ Ð?ÖôÐÜÑ?
Ø?ÐÊ Ð?ÓÌ ÏìÊÞ Ð?ÏÅÏ?ÐË ÏüÈ?Ð× ÐÜÈ?À?À?ÏÅ ÄûÐÐ×áÄé:
##
## vhost.map
##
www.vhost1.dom:80 /path/to/docroot/vhost1
www.vhost2.dom:80 /path/to/docroot/vhost2
:
www.vhostN.dom:80 /path/to/docroot/vhostN
##
## httpd.conf
##
:
# È?ÄéÐÜÇÊÖ?×âÆ? Ñ?Áä Ø?ÍÊÖ?ÈýÐË Ë÷Ïû×áÄé.
UseCanonicalName on
:
# ÀÅË?Ø?ÍÊÖ?È? CLF ×?ÍÔ ÎåÏÅ ÓïÀÅ×áÄé
CustomLog /path/to/access_log "%{VHOST}e %h %l %u %t \"%r\" %>s %b"
:
# ÑæÌ-É?ÏÅÌ- Ð÷ÐëÌÊ Ï?Ñ?ÐË Ë÷Ïû×áÄé
RewriteEngine on
# ÅÞ ÈÚÐË Ñ?Ð××áÄé: ×ßÃ?ÄÒ URLÐË ÀýÔÅÀý,
# ÄéÈ? ×ßÃ?ÄÒ ÀÅË?Ø?ÍÊÖ?ÊÀ DocumentRootÈ?
# Ñ?Ð××áÄé.
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/path/to/vhost.map
# ÐÜÑ? Õ?Àý ÊÉÐò×á ÁäÔ? ×áÀÃÈ? Ë÷Ïû×ßÏ?
# ÀÅË?Ø?ÍÊÖ?ÇÞ ÄûÐÐ×áÄé.
#
# 1. ÀÅË?Ø?ÍÊÖ?ÅùÐÜ ÀÀÐÜ Ë÷Ïû×ßÄÒ Ð?ÔÅÄÒ ÄûÐÐ×ßÑ? ÎÚÄÒÄé
RewriteCond %{REQUEST_URI} !^/commonurl1/.*
RewriteCond %{REQUEST_URI} !^/commonurl2/.*
:
RewriteCond %{REQUEST_URI} !^/commonurlN/.*
#
# 2. ÏüÈ?ÀÅ ×?Ð÷ Ë÷Ïû×ßÄÒ ÉöÉÐÜ Host ×üÄ?È?
# ÀÅË?Ø?ÍÊÖ?È? Ñ?Ï?×ßÉ×ÇÞ
# Host ×üÄ?ÀÅ ÐæÄÒÑ? Ø?ÐÞ×áÄé
RewriteCond %{HTTP_HOST} !^$
#
# 3. Ø?ÍÊÖ?ÈýÐË ÌâÉ?ÐêÇÞ ÈÈÅ÷Äé
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
#
# 4. vhost.mapÏÅÌ- Ø?ÍÊÖ?ÈýÐË Ó?Àý
# ÀöÇÞÐ߯?ÈÈ ÁòÎÿ×áÄé
# (Ð?ÏÅÌ- "NONE"ÐÊ ÎÖÄßÄé)
RewriteCond ${vhost:%1} ^(/.*)$
#
# 5. ÈÆÑ?ÈÇÐÈÇÞ URLÐË É?Ì- Ð?ÔÅÇÞ ÄûÐÐ×ßÀý
# ÇÞÁçÏÅ ÃÂÁòÁòÐ?×è ÀÅË?Ø?ÍÊÖ?È? ÁòÎÿ×è ÅàÄé
RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]
:
ÎþÆËÀä ×ßÈù Ö?Ñ? Ð?À?À?Ð× ÖôÐÜÑ?È? ÁìÎþÈ?ÐÈÄÒ ÁÝÒ?ÐÊ
ÇÞÊÏÐË ÈÇÐË Ì? ÐæÃ?? "Robot Exclusion Protocol" ×çÈåÐË
Ð?Ðõ×á /robots.txt ÖÔÐßÐÊ ÊÈÕû ÐÜÇÁ ÇÞÊÏÐË
ÈÇÄÒÅ? ÓöÊà×ßÑ? ÎÚÄé.
(ÎÖÈÆÅÅ Å?ÇÊÕôÈ?ÀÅ ÁýÎþÌ- ÇÞÊÏÐÜ ÅÉÎÖÄéÄßÈù Ì-É?ÏÅ
ÊÞÄóÐÜ Õ? ÀöÏü) Ð?À?À? /~quux/foo/arc/ÏÅ
ÐæÄÒ URLÅùÐË ÀÕÊÞ×ßÄÒ ÁäÔ?ÐË Ë÷Ïû×áÄé. ÏüÈ?ÄÒ Ö?Ñ?
ÇÞÊÏÐ× Ñ?ÁéÐË ÈÇÎÖÎï ×áÄé. Ñÿ, ÇÞÊÏÐË Í××ð×ßÄÒ Ø?ÍÊÖ?È?
ÈÇÄÒ ÀÝÐÈÇÞÄÒ ÊâÓöÊà×ßÈ÷, Áç Ø?ÍÊÖ?Ð× Ë÷ÏûÐêÅÅ ÈÇÎÖÉ?È?Àä
ÅØÄé. User-Agent HTTP ×üÄ? Ñ?ÊÈÅÅ ÊåÁÃ×áÄé.
RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
http://www.quux-corp.de/~quux/ÏÅ ÐæÄÒ
ÖôÐÜÑ?ÅùÐÜ GIF ÁçÈÂÐË Ö?×ä×áÄéÀý ÀÅÑ?×ßÐê. ÐÜ ÁçÈÂÐÜ
ÈêÐæÎþÌ-, ÄéÈ? Ë÷Æ?ÅùÐÜ ÐêÍÕÐ× ÖôÐÜÑ?ÏÅ Ñ?Ñ? ÈÅÕ?È?
À×Äé. Ì-É?ÏÅ Êâ×ÚÏô×á ÊÞÄóÐÜ Å×É×ÇÞ ÈÇÀý ÍÝÄé.
ÁçÈÂÐË 100% ÊÈØ?×â Ì?ÄÒ Î?Ñ?ÈÈ, ÓæÌâ×á ÊúÆ?ÏüÐ?ÀÅ HTTP Referer ×üÄ?È? ÊÈÃËÄÒ ÀöÏü Ñ?×á×â Ì? ÐæÄé.
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$ - [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$ - [F]
ÎþÆËÀä ÏìÊÞÏÅÌ- Ì-É?ÏÅ Ñ?Áé×â Ì? Î?ÄÒ Ø?ÍÊÖ? ÈåÇßÐË ÌÃÑ?×â Ì? ÐæÃ??
ÎÖÖÔÔÅ >= 1.3b6ÏÅÌ-:
RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]
ÎÖÖÔÔÅ <= 1.3b6ÏÅÌ-:
RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteRule ^/(.*)$ ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND}/$1
RewriteRule !^NOT-FOUND/.* - [F]
RewriteRule ^NOT-FOUND/(.*)$ ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND}/$1
RewriteRule !^NOT-FOUND/.* - [F]
RewriteRule ^NOT-FOUND/(.*)$ /$1
## ## hosts.deny ## ## ÑæÐ×! ÐÜÀÝÐÊ ÈåÇßÓÃÇà ÊÈÐÜÑ?ÈÈ ÈåÇßÐÜ ÎÖÄ߯? ÈÚÐÜÄé. ## mod_rewriteÄÒ ÐÜ Ñ?ÊÈÈ? ÕÀ/À? ÍæÐÈÇÞ ×èÌ?×ßÁòÆ?É?ÏÅ, ## À? ×çÈåÐ× À? ÐêÈ?ÏÅ ÓæÌâ×á "-"ÀÅ ×ÚÏô×ßÄé. ## 193.102.180.41 - bsdti1.sdm.de - 192.76.162.40 -
ÎþÆËÀä Ö?Ñ? Ø?ÍÊÖ? Ø?ÐÊ Ö?Ñ? Ø?ÍÊÖ?Ð× Ë÷ÏûÐêÀÅ ÎÖÖÔÔÅ ×ÑÇßÍÓÈ? Ë÷Ïû×â Ì? Î?ÅÅÇß ×ßÃ??
ÈåÐ? ÎÖÖÔÔÅ Ð?Ì-É?È? ÔÔÖÔÐß×âÆ? ÁÈÌÊÖÔÐßÏÅÌ-
mod_rewriteÀÅ mod_proxy
ÎÖÇÅÏÅ(!) ÐæÎþÎï ×áÄé. ÁçÇ?Èù mod_rewriteÄÒ
mod_proxy ÐÜÐ?ÏÅ ÊâÈÀÄé.
ÐÜÑ? ÄéÐÍÀ? ÀÀÐÜ Ö?Ñ? Ø?ÍÊÖ?È? ÀÕÊÞ×ßÅÅÇß ÌÃÑ?×áÄé...
RewriteCond %{REMOTE_HOST} ^badhost\.mydomain\.com$
RewriteRule !^http://[^/.]\.mydomain.com.* - [F]
...ÁçÈ?Àý ÄéÐÍÐÊ user@hostÏÅ Å?Æ? ÀÕÊÞ×áÄé:
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} ^badguy@badhost\.mydomain\.com$
RewriteRule !^http://[^/.]\.mydomain.com.* - [F]
ÀÅÂ? ÈÕÏü Ö?ÊÀ×á ÐÞÑ?ÐÜ ×ÚÏô×â Æ?ÀÅ ÐæÄé. ÏÉÈ?
ÅùÎþ, ÉÜÈ? ÌÃÑ?×èÅà Ë÷ÏûÐêÐÞÑ? ÀÛË÷×áÄé. ÐÜÅùÏÅÀäÈÈ
(mod_authÐ× Basic AuthÈ? Ë÷Ïû×á
ÀöÏüÏÝ ÄîÈ?) ÊÀÄéÈ? ÉÀÐÍÎ?ÐÜ Ñ?ÁéÐË ×óÏû×áÄé.
Ô?ÁÈÈÈ Ñ?ÁéÐÜ ÀÅÄÙ×ßÅÅÇß Ð÷ÐëÌÊ ÁäÔ?ÅùÐË Ë÷Ïû×áÄé:
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$
RewriteRule ^/~quux/only-for-friends/ - [F]
"Referer" HTTP ×üÄ?ÏÅ Å?Æ? Ï?×ßÄÒÄûÇÞ Ò?ÑÆÖôÐÜÑ?È? ÌÃÑ?×â Ì? ÐæÄÒ Ð?Ï?×á URL Ê?Ø?ÁòÈ? ÈÈÅù Ì? ÐæÄÒÀÅ?
ÄéÐÍÀ? ÀÀÐÜ ÊÉÐò×á ÁäÔ?ÐË...
RewriteMap deflector txt:/path/to/deflector.map
RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}} ^-$
RewriteRule ^.* %{HTTP_REFERER} [R,L]
RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^.* ${deflector:%{HTTP_REFERER}} [R,L]
... Ð÷ÐëÌÊ ÈÚÀ? ÀÀÐÜ Ë÷Ïû×áÄé:
## ## deflector.map ## http://www.badguys.com/bad/index.html - http://www.badguys.com/bad/index2.html - http://www.badguys.com/bad/index3.html http://somewhere.com/
ÁçÇ?Èù ÏôÓËÐË ÐêÅÏÐÈÇÞ (ÈÚÏÅÌ- À?ÐÈÇÞ "-"È?
Ë÷Ïû×á ÀöÏü) Ò?ÑÆÖôÐÜÑ?Ã? (URLÐÜ ÈÚÏÅ ÐæÄÒ ÀöÏü ÅÞÉ?ÒÀ
ÎÖÁäÈåÖ?ÇÞ) Ö?Ñ? URLÇÞ È?ÄéÐÜÇÊÌ××áÄé.
FAQ: ÎþÆËÀä ÐÜÇÁÐ?ÇÁ ÐòÄé×á É?Ñ?È? ×? Ì? ÐæÄÒÀÅ?
mod_rewriteÇÞÄÒ ×èÀñÓ?ÐÜ ÎØÊÈÐÞÄé...
ÏìÊÞ RewriteMapÐË Ë÷Ïû×߯?.
Ñÿ, ×ÑÇÞÁçÇ?ÐÜ RewriteMap Ï?×âÐË
×áÄé. ×ÑÇÞÁçÇ?ÐÊ ÎÖÖÔÔÅÀÅ ÍÓÐë×âÆ? ÍÓÐë×ßÏ?
STDINÏÅÌ- ÏôÓË×á URLÐË ÉîÀý, (ÀÀÐÊ Ì?Ì-ÇÞ!)
ÀñÀ? (ÊÈÕû Ð÷ÐëÌÊÅØ) URLÐË STDOUTÏÅ ÓòÇÒ×áÄé.
RewriteEngine on
RewriteMap quux-map prg:/path/to/map.quux.pl
RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1}
#!/path/to/perl
# ÎÖÖÔÔÅ Ì-É?ÀÅ ÈèÓïÑ? ÎÚÅÅÇß
# ÐäÓòÇÒ É?ÖëÈ? Ë÷Ïû×ßÑ? ÎÚÄÒÄé
$| = 1;
# stdinÏÅÌ- ×áÑéÎÏ URLÐË ÐàÀý
# stdoutÏÅ Ê?Ø?×á URLÐË ÓòÇÒ×áÄé
while (<>) {
s|^foo/|bar/|;
print $_;
}
ÌÃÈý×ßÁòÐ?×è È?Å÷ /~quux/foo/... URLÐË
/~quux/bar/...ÇÞ Ð÷ÐëÌÊ×ßÄÒ ÍÊÕ?ÈÃÖ?È?
ÏÉÇÞ ÅùÎ?Äé. Í×Ñ?ÇÞ ÈÆÐÍÄûÇÞ ×ÑÇÞÁçÇÅÉæ×â Ì? ÐæÄé.
ÁçÇ?Ã? ÐßÉí Ë÷ÏûÐêÀÅ ÐÜÇÁ ÈÚÐË Ë÷Ïû×â
Ì? ÐæÄéÀý ×ßÄ?Æ?Àý, ÏÐÑ? ÍÓÍÊÕë À?È?ÐêÈÈÐÜ ÈÚÐË
Ñ?Ð××èÎï ×äÐË ÑæÐ××߯?.