Apache HTTP Server Version 2.0
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.
������
Ralf S. Engelschall <[email protected]>
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
�˻� ����� ��Ʈ���� �ٸ� ���Ӽ����� ij���ǿ�
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} !^[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" 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/...
�� ���ۼ��ϴ� ��ũ��Ʈ��
���� �����. ������ ������� ���α����� �� �ִ�.
���� �Ϲ� ����ڰ� �̷� ���� �����
�� �ִٰ� �ϴ����, ���� �ý��� �����ڸ��� ����
�����ؾ� ���� �����϶�.