<-
Apache > HTTP Server > Documentation > Version 2.0 > Miscellaneous Documentation

Please note

This document refers to the 2.0 version of Apache httpd, which is no longer maintained. Upgrade, and refer to the current version of httpd instead, documented at:

You may follow this link to go to the current version of this document.

URL ���ۼ� ��ħ��

������ ���:  en  |  ko 

�� ������ �ֽ��� ������ �ƴմϴ�. �ֱٿ� ����� ������ ���� ������ �����ϼ���.

������
Ralf S. Engelschall <[email protected]>
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]

������ �Ǵ� ȣ��Ʈ��

��Ȳ����:
�� ��Ģ�� ������ ����Ʈ�� ������ �� �ִ� �ٸ� ȣ��Ʈ�� ��� Ư�� ȣ��Ʈ���� ����ϵ��� �����Ѵ�. ���� ���, example.com ��� www.example.com�� ����ϵ��� �����ϰ� �ʹٸ� ������ ���� ��Ģ�� ����� �� �ִ�.
�ذ�å:
# 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�� ���� ���������� �����! �� �̸������� ������������ ������ ������ �ο��ؾ� �Ѵ�: 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_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�� ���� ȯ�溯���� �����Ѵ�

��Ȳ����:

��û�鰣�� ���������� �����ϱ����� 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 �˻� ����� ��Ʈ���� �ٸ� ���Ӽ����� ij���ǿ� 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]

�N ������ �����

��Ȳ����:

�� ����� �Ƿ� ����̴�: �������� �������� ����������, �������� �������� �����Ѵ�. ��, �������� �����ϰ� (���Ͻý��ۿ��� ���� ������ �״��) ���� �������� ���޵�����, ���� ��� �������� �������� �����Ѵ�. �׷��� ���� (Ȥ�� 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_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}}]
    :
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 Auth�� ����� ���� �޸�) ���ٸ� �������� ������ ����Ѵ�.

�ذ�å:

ģ���� ������ �����ϵ��� ���ۼ� ��Ģ���� ����Ѵ�:

RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^[email protected]\.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