Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/manual/ko/misc/rewriteguide.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013
Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 07:47:32 2014
Êîäèðîâêà: ISO8859-5

Ïîèñêîâûå ñëîâà: ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ð ð ð ð ð ð
URL Ð÷ÐëÌÊ Ñ?Ô?Ì- - Apache HTTP Server
<-
Apache > HTTP Server > Documentation > Version 2.2 > Miscellaneous Documentation

URL Ð÷ÐëÌÊ Ñ?Ô?Ì-

ÀÅÄÙ×á Î?Îþ:  en  |  ko 

ÐÜ É?Ì-ÄÒ ÓæÍÕÖ× É?Ï?ÐÜ ÎÖÄåÄßÄé. ÓæÁéÏÅ Ê?ÀöÅØ ÃËÏûÐÊ ÏÅÎþ É?Ì-È? Ò?Àý×ßÌÌÏô.

Ï?Ð?Ðê
Ralf S. Engelschall <rse@apache.org>
1997Ãò 12Ï?

ÐÜ É?Ì-ÄÒ mod_rewrite Ò?ÑÆ É?Ì-È? ÊÈÓö×áÄé. ÐÜ É?Ì-ÄÒ Ð?À?È?ÐêÀÅ Í×Ñ? ÐëÎ?ÏÅÌ- ÊÞÅ?ÔÅÀäÅ×ÄÒ Ð?×?Ð?ÐÞ URLÀ?ÇÓ É?Ñ?È? ×èÀñ×ßÁòÐ?×èÌ- ÎþÆËÀä ÎÖÖÔÔÅ mod_rewriteÈ? Ë÷Ïû×ßÄÒÑ? ÌÃÈý×áÄé. URL Ð÷ÐëÌÊ ÁäÔ?ÐË ÌÃÑ?×ßÏ? É?Ñ?È? ×èÀñ×ßÄÒ ÉöÉÐË ÐêÌÌØ? ÌÃÈý×áÄé.

top

mod_rewrite ÌâÀÃ

ÎÖÖÔÔÅ mod_rewrite È?ÅòÐÊ ÁÂÐõ×ßÄé. Ñÿ, URLÐË ÑÆÐë×â Ì? ÐæÄÒ À-ÇÒ×ßÀý Í×ÇÞ Ñ?ÁÃ×á È?ÅòÐÜÄé. Ë?Ë?×èÏäÄ? ÀÕÐ× È?Å÷ ÑÎÇ?Ð× URL ÑÆÐëÐÜ ÀÅÄÙ×ßÄé. ÁçÇ?Ã? Áç ÄûÀÅÇÞ Ë÷Ïû×ßÁò ÊÉÐò×ßÄé. mod_rewriteÐ× ÓæÄû ÄìÑÅÐÊ ÓÚÊÈÐêÀÅ ÐÜ×è×ßÀý Ë÷Ïû×ßÁò ÍÁÑ? ÎÚÄéÄÒ ÑÅÐÜÄé. ÍÙÑ?Îþ ÎÖÖÔÔÅ Ð?É?ÀÅÅÅ ÑÎÑÎ mod_rewriteÐ× Ë?ÇÞÏþ ÏûÅÅÈ? ÉïÀï×áÄé.

ÄéÈ? ÈËÇÞ: mod_rewriteÏÅ Äû×è Ä÷ÍÕÐÊ ÓÃÐÍÏÅ ÀÜÐË ÈäÀý ÐÄûÇÞ ÄéÍÓ Ë÷Ïû×ßÑ? ÎÚÀÕÃ?, À-ÇÒ×äÏÅ ÈÕÇñÅ×Îþ ÎåÐÈÇÞ Ëþ ÅÏÎØ Ë÷Æ?ÏÅ Ê?Ñ? ÀÝÐÜÄé. ÐÜ ÁëÐÊ ÓÉÉ?ÒÀ ÀöÏüÈ? ÈÇÁòÐ?×è ÐÜÉÜ ÎÛÇÑÑ? ÈþÀÅÑ? ÌÊÀ?Ë÷ÇÚÈ? ÌâÀÃ×ßÇÑÀý ×áÄé.

top

Í×ÏûÐ?ÐÞ ×èÀñÓ?

ÐÜÑ? ÃËÀÅ Ñ?Ñ? ÈÈÅùÎ?ÀÕÃ? ÄéÈ? Ë÷Æ?ÅùÐÜ ÈÈÅ÷ ÈÉÐÊ Í×ÏûÐ?ÐÞ ×èÀñÓ?ÐÜ Ã?ÏÒÄé. ÏÉÑ?ÏÅÌ- URL Ð÷ÐëÌÊÐ× ØöÈÆÌ?ÐË ÈÆÐÍÂ? ÉøÏüÁö ÉéÆ?Äé.

ÑæÐ×: Ì-É? ÌÃÑ?ÏÅ Å?Æ? Ë?ØÂÏÅ ÈÒÀä ÏÉÑ?È? ÑÆÁí Ì?Ñ?×èÎï ×â ÀöÏüÀÅ ÐæÄé. ÏÉÈ? ÅùÎþ, ÓïÀÅÇÞ mod_alias, mod_userdir ÅþÐË Ë÷Ïû×áÄéÈù [PT] ×ÓÇÅÁçÈ? ÓïÀÅ×áÄé. Ø?ÐÊ ÑæÌ-É?ÌÃÑ?/ÀÅË?Ø?ÍÊÖ? Ë÷ÏûÐõÌâÀÅ ÎÖÄá .htaccess Ë÷ÏûÐõÌâÏÅ ÎÛÈÒÀä ÁäÔ?ÐË Ì?Ñ?×â Ì?ÅÅ ÐæÄé. Ë÷Ïû×ßÁò Ð?ÏÅ ×çË? ÁäÔ?ÐÜ ÎþÆ ÁòÄÙÐË ×ßÄÒÑ? ÐÜ×è×ßÅÅÇß ×èÆ?. ÁçÇ?Èù É?Ñ?È? ×××â Ì? ÐæÄé.
top

URL ÁÈÑÆ

ÁòÑèÐÜ Å×ÄÒ URL

Ë?ØÂÌÃÈý:

×á È?ÌâÍÊÏÅ Äû×è Ï?Ç? URLÐË ÀÅÑ?ÄÒ Ð?Ì-É?ÀÅ ÐæÄé. ÊÈÕû (Í×Ñ? Ë÷Ïû×ßÀý ÎÛÇÑÑ?Îï ×â) ÁòÑèÐÜ Å×ÄÒ URLÀ?, ÄìÓð Ø?ÐÊ ÃËÊÞ ÏûÅÅÐ× URLÐÜ ÐæÄé. Ë÷ÏûÐêÀÅ ÏôÓËÏÅ ÎþÆ URLÐË Ë÷Ïû×ßÄ?Ñ? ÁòÑèÐÜ Å×ÄÒ URLÈÈÐË ÊÈÏ?ÑðÎï ×áÄé.

×èÀñÓ?:

ÁòÑèÐÜ Å×Ñ?ÎÚÄÒ È?Å÷ URLÐË ÊúÆ?ÏüÐ?ÀÅ ÎÛÅÅÇß ÀýÔÅÁòÐ?×è ÏìÊÞ HTTP È?ÄéÐÜÇÊÌ××áÄé. ÏÉÈ? ÅùÎþ ÎÖÇÅ ÁäÔ?ÐÊ /~userÈ? ÁòÑèÐÜ Å×ÄÒ /u/userÇÞ ÄûÓÌ×ßÀý, /u/user ÈÆÑ?ÈÇÏÅ ÍÍÇÅÍ?ÀÅ Î?ÄéÈù ÓïÀÅ×áÄé.

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

ÁòÑèÐÜ Å×ÄÒ Ø?ÍÊÖ?Èý

Ë?ØÂÌÃÈý:
...
×èÀñÓ?:
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]

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ÐË Ì-É? ÅÆÈÃÐ?ÐÈÇÞ ÈÈÅ÷Äé! Ð? ÐÜÈ?À?À?ÏÅ Ì-É?ÅÆÈÃÐ?ÐÞ ÅÏÐß×á ÁÈÑÆÈ? ÊÞÏ?×èÎï ×áÄé: 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

×èÌ?ÐË Ð?×á Ø?Ö?:

  1. ÃçÉ?ÒÀ ÊÞÊàÏÅÌ- ÄûÓÌ ×ÚÅõ('-')ÀÅ Î?Àý L (last) ×ÓÇÅÁçÀÅ ÐæÐÍÐË ÑæÈå×ßÆ?
  2. ÈÆÑ?ÈÇ ÊÞÊàÏÅÌ- ÓÉÉ?ÒÀ ÁäÔ?ÏÅ ! (not) É?ÐêÏÝ C (chain) ×ÓÇÅÁçÈ? ÑæÈå×ßÆ?
  3. ÈÆÑ?ÈÇ ÁäÔ?ÏÅÌ- ÁòÕÈ ×èÄ÷×ßÑ? ÎÚÄÒ È?Å÷ ÀöÏüÈ? ÐòÎÖÃËÄÒ ÖàÕßÐË ÑæÈå×ßÆ?

NCSA imagemapÐË ÎÖÖÔÔÅ mod_imagemapÐÈÇÞ

Ë?ØÂÌÃÈý:

Ë÷Æ?ÅùÐÊ NCSA Ð?Ì-É?ÏÅÌ- ×?ÄûÐ?ÐÞ ÎÖÖÔÔÅ Ð?Ì-É?ÇÞ ÐêÏ?ÍÊÇÄÀä ÏÕÀìÀÅÁö ÉéÆ?Äé. ÁçÇÅÌ- ÏÐÇÅÅØ NCSA imagemap ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×á ÖôÐÜÑ?È? ×?ÄûÐ?ÐÞ ÎÖÖÔÔÅ mod_imagemapÇÞ ÓÃÈ?×ßÁö ÉéÆ?Äé. É?Ñ?ÄÒ 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ÏÅ Å?Æ? Ø?ÀöÊ?Ì?È? ÌÃÑ?×áÄé

Ë?ØÂÌÃÈý:

ÏôÓËÅùÀ?ÏÅ Ë?ÕÒÑ?ÊÈÈ? Ð?Ñ?×ßÁòÐ?×è 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ÐË ÄéÈ? Ð?Ì-É?ÇÞ È?ÄéÐÜÇÊÌ×

Ë?ØÂÌÃÈý:

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]ÐË Ë÷Ïû×ßÈù ÎØÅØÄé.

Ð?ÐõÌâ Ñ?Áé ÑïÀø(multiplexer)

Ë?ØÂÌÃÈý:

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 ÃËÏûÐË Ì-ÊåÍÊ×áÄé. Ø?ÖôÐÜÑ?ÏÅÌ- Ë÷Ïû×ßÁò ÑÑÐÊ ÁòÄÙÐÜÄé...

YYYYÈ? XXXXÇÞ ÐÜÐ?×á ÀöÏü Ï?Ø?Ø?

Ë?ØÂÌÃÈý:

Ï?Ç? .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
top

ÔÑÕéÓ? ÄéÇ÷Áò

Ë?ÇÞ ÐÜÐ? (À?ÓïÁò)

Ë?ØÂÌÃÈý:

ÓæÁé 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È? Ë÷Ïû×ßÄÒ ÀöÏüÈ? ËüÖüÊÈÐê:

  1. DNS Round-Robin

    ÀÅÐõ À?Äì×á ÇÞÅõÉûÇÁÍÜ ÉöÉÐÊ 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ÐÈÇÞ ÊÈÃËÑ?ÁòÆ?É?ÏÅ ÏßÊ?×á ÇÞÅõÉûÇÁÍÜ ÁòÉÐÜ ÎÖÄäÐË ÑæÐ××ßÆ?. ÁçÇ?Ã? Õ?Àä ÊÈÈù ÏôÓËÐÜ Ï?Ç? Ð?Ì-É?ÏÅ ÊàËúÅ×É×ÇÞ ØÏÀ?ÀÅ ÑÑÄé.

  2. DNS ÇÞÅõÉûÇÁÍÜ

    http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.htmlÏÅ ÐæÄÒ lbnamed ×ÑÇÞÁçÇ?ÐË Ë÷Ïû×ßÏ? Ñ?ÁÃ×á DNSÁòÉí ÇÞÅõÉûÇÁÍÜÐË ×â Ì? ÐæÄé. DNSÀÅ Í×Ñ? ÇÞÅõÉûÇÁÍÜÐË ×ßÅÅÇß ÈÈÅõÄÒ Ï?Ç? ÅÅÁÈÏÝ Perl 5 ×ÑÇÞÁçÇ?ÐÜÄé.

  3. Proxy Throughput Round-Robin

    ÐÜ ÉöÉÐÊ 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 ÅþÐÊ Ð?Ð?ÐÈÇÞ ÄéÈ? Ì-É?ÀÅ ÓÃÈ?×áÄé. ÐÜÀÝÐÜ ×éÍÙÐÜÄé.
  4. ×ßÅõÏ?Îþ/TCP Round-Robin

    ×ßÅõÏ?ÎþÈ? Ë÷Ïû×á ×èÀñÓ?ÅÅ ÐæÄé. CiscoÄÒ TCP/IP Ì?ÑèÏÅÌ- ÇÞÅõÉûÇÁÍÜÐË ×ßÄÒ LocalDirectorÆ?ÄÒ Á?ÉÀÐË Ö×Äé. Í×Ñ?ÇÞÄÒ Ð?Ì-É?ÁÊ ÎåÄìÏÅ Ð?ÔÅ×ßÄÒ ÐßÑÎÐ× ØÈÇÞÌ?Ñè ÀäÐÜÖ?Ï?ÐÜÄé. ÐêÁíÐÜ ÓöÊà×ßÀý ÀýÌÊÄÙ ×èÀñÓ?ÐÜ ×ÚÏô×ßÄéÈù ÐÜÀÝÐË Ë÷Ïû×ßÆ?.

Ë?ÇÞÏþ MIME-type, Ë?ÇÞÏþ Ì-ÊåÍÊ

Ë?ØÂÌÃÈý:

ÃçÖ?Ï?ÏÅÄÒ ÈêÑ? 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 "&lt;b&gt;ERROR&lt;/b&gt;: 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 "&lt;b&gt;ERROR&lt;/b&gt;: 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, "&lt;$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 &lt; $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_URL}  !^/commonurl1/.*
RewriteCond   %{REQUEST_URL}  !^/commonurl2/.*
    :
RewriteCond   %{REQUEST_URL}  !^/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}}]
    :
top

Ñ?Áé Ñ?×á

ÇÞÊÏ ÈÇÁò

Ë?ØÂÌÃÈý:

ÎþÆËÀä ×ßÈù Ö?Ñ? Ð?À?À?Ð× ÖôÐÜÑ?È? ÁìÎþÈ?ÐÈÄÒ ÁÝÒ?ÐÊ ÇÞÊÏÐË ÈÇÐË Ì? ÐæÃ?? "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Ð× 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ÁòÉí Ê?Ø?Áò(deflector)

Ë?ØÂÌÃÈý:

"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ÇÞ È?ÄéÐÜÇÊÌ××áÄé.

top

ÁòÕÈ

ÏìÊÞ Ð÷ÐëÌÊ Ï?Ñ?

Ë?ØÂÌÃÈý:

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/...ÇÞ Ð÷ÐëÌÊ×ßÄÒ ÍÊÕ?ÈÃÖ?È? ÏÉÇÞ ÅùÎ?Äé. Í×Ñ?ÇÞ ÈÆÐÍÄûÇÞ ×ÑÇÞÁçÇÅÉæ×â Ì? ÐæÄé. ÁçÇ?Ã? ÐßÉí Ë÷ÏûÐêÀÅ ÐÜÇÁ ÈÚÐË Ë÷Ïû×â Ì? ÐæÄéÀý ×ßÄ?Æ?Àý, ÏÐÑ? ÍÓÍÊÕë À?È?ÐêÈÈÐÜ ÈÚÐË Ñ?Ð××èÎï ×äÐË ÑæÐ××ßÆ?.

ÀÅÄÙ×á Î?Îþ:  en  |  ko 

top

Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.