<-
Apache > HTTP Server > Documentation > Version 2.5 > Rewrite

RewriteMap �¬ì�©í��ê¸�

°¡´ÉÇÑ ¾ð¾î:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

�� 문ì���� mod_rewrite 참조 문ì��ë¥� ë³´ì¶©�©ë����. RewriteMap ì§����´ì�� �¬ì�©ë��� �¤ë���ê³� �¤ì���� RewriteMap ������ ����ë¥� ��ê³µí�©ë����.

�� ������ ì¤� ë§��� ê²��� �¹ì�� ��ë²� �¤ì������ ê·¸ë��ë¡� ������ì§� ���� �� ���¼ë��ë¡�, �¨ì���� ����ë¥� ë³µì�¬í���� �¤ì���� ë¶��¬ë�£ê¸°ë³´ë�¤ë�� �´í�´í���� ê²��� ì¤����©ë����.

Âü°í

top

���

RewriteMap ì§����´ë�� RewriteRule ���� RewriteCond ì§����´ì�� 컨í���¤í�¸ì���� �¸ì��� �� ���� �¸ë� �¨ì��ë¥� �������� ��ê·� ������ë§��¼ë��� ��ë¬� ë³µì�¡í��ê±°ë�� ��ë¬� ��문í���� �¬ì���±ì�� �����©ë����. �� ì¡°í���� ���¤ë�� ���� �¹ì���� ���´ë��ê³� RewriteMap 참조 문ì���� �´ê±°�� ���� ì¤� ������ �� ���µë����.

RewriteMap ì§����´ì�� 구문�� �¤ì��ê³� ê°��µë����:

RewriteMap MapName MapType:MapSource

MapName�� ë§µì�� ���¹í���� ������ �´ë��´ë©°, �´í�� ì§����´ì���� �¬ì�©í�©ë����. �¸ì���� �¤ì�� 구문�� �µí�� ë§µì�� ���¬ë�©ë����:

${ MapName : LookupKey }
${ MapName : LookupKey | DefaultValue }

�´ë�¬í�� 구조ê°� ë°�����ë©� ë§� MapName�� ì¡°í����ê³� �� LookupKeyê°� ê²����©ë����. �¤ê� ë°�견ë��ë©� ë§� �¨ì�� 구조�� SubstValueë¡� ��ì²´ë�©ë����. �¤ë�� ì°¾ì� 못í��ë©� DefaultValueë¡� ��ì²´ë��ê±°ë��, DefaultValueê°� ì§�����ì§� ���� ê²½ì�� ë¹� 문ì���´ë� ��ì²´ë�©ë����.

��ë¥� �¤ì�� �¤ì��ê³� ê°��� RewriteMap�� ������ �� ���µë����:

RewriteMap examplemap "txt:/path/to/file/map.txt"

ê·¸ë�¬ë©´ RewriteRule���� �¤ì��ê³� ê°��� �� ë§µì�� �¬ì�©í�� �� ���µë����:

RewriteRule "^/ex/(.*)" "${examplemap:$1}"

ë§µì���� ��무ê��� ì°¾ì� 못í�� ê²½ì�°ë�� ��ë¹����� 기본ê°��� ì§����� �� ���µë����:

RewriteRule "^/ex/(.*)" "${examplemap:$1|/not_found.html}"

������리ë� ë°� .htaccess 컨í���¤í��

RewriteMap ì§����´ë�� <Directory> �¹ì���´ë�� .htaccess ���¼ì���� �¬ì�©í�� �� ���µë����. ��ë²� ���� ê°����¸ì�¤í�� 컨í���¤í�¸ì���� ë§µì�� ���¸í�´ì�� �©ë����. �¼ë�� ���±ë�� ë§µì�� �´ë�� ë²����� RewriteRuleê³� RewriteCond ì§����´ì���� �¬ì�©í�� �� ���µë����. �´ë�� ë²������� ������ �� ���� ë¿�������.

�¤ì�� �¹ì�������� �¬ì�©í�� �� ���� �¤ì���� MapType�� �¤ë���ê³� ê°�ê°��� ����ë¥� ��ê³µí�©ë����.

top

int: �´ë� �¨ì��

MapType�� int�� ê²½ì�� MapSource�� �¬ì�� ê°��¥í�� �´ë� RewriteMap �¨ì�� ì¤� ����������. 모ë�� ���±ì���� ap_register_rewrite_mapfunc APIë¥� �±ë����� ì¶�ê°� �´ë� �¨ì��ë¥� ��ê³µí�� �� ���µë����. 기본���¼ë� ��ê³µë���� �¨ì���� �¤ì��ê³� ê°��µë����:

�´ë�¬í�� �¨ì�� ì¤� ����ë¥� �¬ì�©í���¤ë©´ int �¨ì��ë¥� 참조���� RewriteMap�� ���±í�� �¤ì�� RewriteRule���� �¬ì�©í�©ë����:

URIë¥� 모ë�� ��문ì�� ë²����¼ë� 리ë�¤ì�´ë����

RewriteMap lc int:tolower
RewriteRule "(.*)" "${lc:$1}" [R]

�¬ê¸°�� ��ê³µë�� ������ �¤ë� 목ì���¼ë�ë§� ��ê³µë��ë©� ê¶��� �¬í���� ��������. URL�� ����문ì�� 구ë� ���� ë§��¤ë�¤ë©´ ���� mod_speling �¬ì�©ì�� ê³��¤í��������.

top

txt: �¼ë� ���¤í�� ë§�

MapType�� txt�� ê²½ì�� MapSource�� �� ì¤��� ������ 공백�¼ë� 구ë��� ��/ê°� ���� �¬í�¨í���� �¼ë� ���¤í�� 매í�� ���¼ì�� ���� ���¤í�� ê²½ë�������. �������¼ë� '#' 문ì��ë¡� �������� 주ì���� �¬í�¨ë�� �� ���µë����.

���¨í�� ���¤í�� �¬ì���� ë§� ���¼ì�� �¤ì��ê³� ê°��� 구문�� ê°�ì§�����:

# 주� �
MatchingKey SubstValue
MatchingKey SubstValue # 주�

RewriteMap�� �¸ì���ë©� �¸ì��ê°� ì¤��� ì²� ë²�ì§� �¸ì������ ê²�����ê³�, ë°�견ë��ë©� ì¹��� ê°��� ë°����©ë����.

��ë¥� �¤ì��, 기ì�µí��ê¸� �¬ì�� URL�� ���� ���� �´ë��� ���� IDë¡� ë³������� ë§� ���¼ì�� �¬ì�©í�� �� ���µë����:

�������� IDë¡��� �¤ì��

RewriteMap product2id "txt:/etc/apache2/productmap.txt"
RewriteRule "^/product/(.*)" "/prods.php?id=${product2id:$1|NOTFOUND}" [PT]

�¬ê¸°�� prods.php �¤í�¬ë¦½�¸ë�� ì¡°í�� ë§µì���� ������ ì°¾ì� 못í���� �� id=NOTFOUND �¸ì��ë¥� ë°��¼ë©´ �´ë�»ê� �´ì�� ����ì§� ��ê³� ���¤ê� ê°����©ë����.

/etc/apache2/productmap.txt ���¼ì���� �¤ì���� �¬í�¨ë�©ë����:

�������� ID��� �

##
## productmap.txt - �������� ID��� � ����
##

television 993
stereo 198
fishingrod 043
basketball 418
telephone 328

�°ë�¼ì�� http://example.com/product/television�� ��ì²���ë©� RewriteRule�� ���©ë��ê³� ��ì²��� �´ë����¼ë� /prods.php?id=993�� 매í���©ë����.

ì°¸ê�: .htaccess ����

주ì�´ì� ������ ��ë²� ���� ê°����¸ì�¤í�� ë²������� �¬ì�©í����ë¡� ���±ë�����µë����. .htaccess ���¼ì���� �¬ì�©í�� ê³����´ë�¼ë©´, 무ì���´ë�� �¼ì�����ë¡� �¬ì���� �¨í�´ì���� ���� �¬ë����ë¥� ��ê±°í�´ì�� �©ë����:
RewriteRule "^product/(.*)" "/prods.php?id=${product2id:$1|NOTFOUND}" [PT]

����� 조�

ì¡°í���� �¤ë�� ë§� ���¼ì�� mtime(���� ��ê°�)�� ë³�ê²½ë��ê±°ë�� httpd ��ë²�ê°� �¬ì������ ��ê¹�ì§� httpd�� ���� ìº����©ë����. �´ë�� ë§��� ��ì²��� ���� �¸ì����� ë§µì�� �±ë�¥ì�� �¥ì�����µë����.

top

rnd: 무ì���� �¼ë� ���¤í��

MapType�� rnd�� ê²½ì�� MapSource�� �¼ë� ���¤í�� 매í�� ���¼ì�� ���� ���¤í�� ê²½ë��´ë©°, ê°� ì¤����� �¤ì�� |ë¡� 구ë��� ���� �´ì���� ê°��� �¬í�¨ë�©ë����. �¤ê� �¼ì���ë©� �� ê°� ì¤� ����ê°� 무ì����ë¡� �����©ë����.

��ë¥� �¤ì��, 리ë��� ��ë¡���ë¥� �µí�� 무ì���� ë¶��� ë¶��°ì�� ���� �¤ì�� ë§� ���¼ê³¼ ì§����´ë�� �¬ì�©í�� �� ���µë����. �´ë�¸ì��� 'static' ���� ��ë²� ì¤� ����ë¡� ���¡ë��ê³�, ��머ì��� 'dynamic' ���� ��ë²� ì¤� ����ë¡� ���¡ë�©ë����.

�¬ì���� ë§� ����

##
## map.txt -- �¬ì���� ë§�
##

static www1|www2|www3|www4
dynamic www5|www6

�¤ì�� ì§�����

RewriteMap servers "rnd:/path/to/file/map.txt"

RewriteRule "^/(.*\.(png|gif|jpg))" "http://${servers:static}/$1"  [NC,P,L]
RewriteRule "^/(.*)"                "http://${servers:dynamic}/$1" [P,L]

�°ë�¼ì�� �´ë�¸ì�ê°� ��ì²���ê³� �� ê·�ì¹� ì¤� ì²� ë²�째ê� �¼ì���ë©� RewriteMap�� ë§� ���¼ì���� 문ì���� static�� ì¡°í����ê³� ì§����� �¸ì�¤í�¸ë� ì¤� ����ë¥� 무ì����ë¡� ë°������� RewriteRule �������� �¬ì�©í�©ë����.

��ë²� ì¤� ����ê°� ������ ��ë¥��� ���´ë�¤ë©´(��ë¥� �¤ì�� ��ë²� ì¤� ����ê°� �� ë§��� ë©�모리ë¥� ê°�ì§�ê³� ���� �� ë§��� ��ì²��� ì²�리í�� �� ���� ê²½ì��) ë§� ���¼ì�� �´ë�� ��ë²�ë¥� �� ë§��� ���´í��ë©� �©ë����.

static www1|www1|www2|www3|www4

top

dbm: DBM �´ì�� ����

MapType�� dbm�� ê²½ì�� MapSource�� 매í���� �¬ì�©í�� ��/ê°� ���� �¬í�¨í���� DBM �°ì�´í�°ë��´ì�� ���¼ì�� ���� ���¤í�� ê²½ë�������. �´ê��� txt 맵과 ������ ê°��� ë°©ì���¼ë� ������ì§�ë§�, DBM�� �¸ë�±ì�±ë���� ���� ë°�ë©� ���¤í�� ���¼ì�� ê·¸ë��ì§� ���¼ë��ë¡� �¨ì�� ë¹�ë¦�����. �´ë�� �µí�� ������ �¤ì�� �� ë¹�르ê� ��ê·¼í�� �� ���µë����.

�������¼ë� �¹ì�� dbm ������ ì§����� �� ���µë����:

RewriteMap examplemap "dbm=sdbm:/etc/apache/mapfile.dbm"

������ sdbm, gdbm, ndbm ���� db�� �� ���µë����. ê·¸ë�¬ë�� httpd ��ì²´ê� ë¹����� �� �¬ì�©ë�� ê²�ê³� �¼ì����� �¬ë�ë¥� DBM �¼ì�´ë��¬ë¦¬ë¥� �¬ì�©í��ë¯�ë¡� Apache HTTP Server�� �¨ê� ��ê³µë���� httxt2dbm ���¸ë¦¬�°ë�� �¬ì�©í���� ê²��� ì¢��µë����.

dbm ���¼ì�� ���±í���¤ë©´ 먼ì�� txt �¹ì���� �¤ë��� ��ë¡� ���¤í�� ë§� ���¼ì�� ���±í�©ë����. ê·¸ë�� �¤ì�� httxt2dbm�� �¤í���©ë����:

$ httxt2dbm -i mapfile.txt -o mapfile.map

ê·¸ë�� �¤ì�� RewriteMap ì§����´ì���� ê²°ê³¼ ���¼ì�� 참조�� �� ���µë����:

RewriteMap mapname "dbm:/etc/apache/mapfile.map"

�¼ë� dbm ���������� ê³µí�� 기본 �´ë��� ê°�ì§� �� �´ì���� ���¼ì�� ���±ë�©ë����. ��ë¥� �¤ì�� mapfile.map.dirê³� mapfile.map.pag�¼ë�� �� ���¼ì�� ���� �� ���µë����. �´ê��� �����´ë©° RewriteMap ì§����´ì���� 기본 �´ë��� mapfile.mapë§� �¬ì�©í��ë©� �©ë����.

����� 조�

ì¡°í���� �¤ë�� ë§� ���¼ì�� mtime(���� ��ê°�)�� ë³�ê²½ë��ê±°ë�� httpd ��ë²�ê°� �¬ì������ ��ê¹�ì§� httpd�� ���� ìº����©ë����. �´ë�� ë§��� ��ì²��� ���� �¸ì����� ë§µì�� �±ë�¥ì�� �¥ì�����µë����.

top

prg: �¸ë� �¬ì���� ��ë¡�ê·¸ë��

MapType�� prg�� ê²½ì�� MapSource�� 매í�� ������ ��ê³µí�� �¤í�� ê°��¥í�� ��ë¡�ê·¸ë�¨ì�� ���� ���¤í�� ê²½ë�������. �´ê��� ì»´í���¼ë�� ë°��´ë��ë¦� ���¼ì�´ê±°�� Python�´ë�� Perlê³� ê°��� �¸í�°í��리í�� �¸ì�´ì�� ��ë¡�ê·¸ë�¨ì�� �� ���µë����.

�� ��ë¡�ê·¸ë�¨ì�� Apache HTTP Serverê°� ������ �� �� ë²� ������ë©�, STDINê³� STDOUT�� �µí�� �¬ì���� ��ì§�ê³� �µì���©ë����. ê°� ë§� �¨ì�� ì¡°í���� ���� �¤ê� ��ë¡�ê·¸ë�¨ì�� STDIN�� 기ë���ê³� ê·� �¤ì�� ì¤�ë°�ê¿� 문ì��ê°� �µë����. ��ë¡�ê·¸ë�¨ì�� STDIN���� �� ì¤��� �½ê�(ì¤�ë°�ê¿� �¬í��) ���µì�� STDOUT�� ì¤�ë°�ê¿��¼ë� ������ �� ì¤�ë¡� ���±í�´ì�� �©ë����. �¤ì���� ì¤�ë°�ê¿� 문ì��ê°� �¬í�¨ë��ì§� ���¼ë©°, ì¤�ë°�ê¿��� �¬í�¨ë�� �¤ê� ë°�견ë��ë©� ì¡°í��ê°� �¤í�¨í�©ë����.

�������� ì¡°í�� ê°��� ���¼ë©´ ë§� ��ë¡�ê·¸ë�¨ì�� �� 문ì�� 문ì���� "NULL"�� ë°������� �´ë�� �����´ì�� �©ë����. �� ë¹�êµ��� ����문ì��ë¥� 구ë���ì§� ���¼ë��ë¡� "null", "Null" �±ë�� �¤í�¨í�� ì¡°í��ë¡� ì²�리ë�©ë����. ê²°ê³¼���¼ë� 매í�� ��ë¡�ê·¸ë�¨ì�� 매í���� ê°��¼ë� 리í�°ë�� 문ì���� "NULL"�� ë°������� ê²��� ë¶�ê°��¥í�©ë����.

��ë¡�ê·¸ë�¨ì�� STDERR�� httpd ë¶�ëª� ��ë¡��¸ì�¤ì���� ������ë¯�ë¡� ��ë¡�ê·¸ë�¨ì�� STDERR�� �°ë�� 모ë�� ê²��� httpd�� ��ì²� �¤ë� ì¶��¥ê³¼ ê°��� ê³�(�¼ë����¼ë� ErrorLog)�� 기ë��©ë����.

�¸ë� �¬ì���� ��ë¡�ê·¸ë�¨ì�� RewriteEngine�� on�¼ë� �¤ì����ì§� ���� 컨í���¤í�¸ì���� ������ ê²½ì�� ������ì§� ���µë����.

기본���¼ë� �¸ë� �¬ì���� ��ë¡�ê·¸ë�¨ì�� httpdë¥� ������ user:group�¼ë� �¤í���©ë����. �´ê��� UNIX ���¤í������ RewriteMap�� �� ë²�ì§� �¸ì��ë¡� username:groupname �����¼ë� �¬ì�©ì�� �´ë�ê³� 그룹 �´ë��� ���¬í���� ë³�ê²½í�� �� ���µë����.

�� 기ë�¥ì�� ��ë¡�ê·¸ë�¨ê³¼�� �������� �µì���� ������ rewrite-map 뮤í���¤ë�� ���©í�©ë����. 뮤í���� ë©�커ë��ì¦�ê³� ��ê¸� ���¼ì�� Mutex ì§����´ë� 구ì�±í�� �� ���µë����.

�¬ê¸°�� ��ì²� URI���� 모ë�� ����ë¥� ë°�ì¤�ë¡� ��ì²´í���� ê°��¨í�� ����ê°� ���� ���µë����.

�¬ì���� �¤ì��

RewriteMap d2u "prg:/www/bin/dash2under.py" apache:apache
RewriteRule "-" "${d2u:%{REQUEST_URI}}"

dash2under.py

#!/usr/bin/env python3
import sys

for line in sys.stdin:
    print(line.strip().replace('-', '_'), flush=True)

주�!

  • �¬ì���� ë§� ��ë¡�ê·¸ë�¨ì�� ê°��¥í�� �� ê°��¨í��ê²� ��ì§���������. ��ë¡�ê·¸ë�¨ì�� ë©�ì¶�ë©� httpdê°� ë§µì�� ���µì�� 무í���� 기ë�¤ë¦¬ê²� ��ê³�, �´ë�� �¤ì�� httpdê°� ��ì²��� ���µí��ì§� 못í��ê²� �©ë����.
  • ��ë¡�ê·¸ë�¨ì���� ë²��¼ë��� ��������. ���� Python ���������� print()�� flush=Trueë¥� ���¬í���� �´ë�� �����©ë����. ë²��¼ë��� I/O�� httpdê°� ì¶��¥ì�� 기ë�¤ë¦¬ê²� ��ë¯�ë¡� ë©�ì¶�ê²� �©ë����.
  • ��ë²� ���� �� �������� ��ë¡�ê·¸ë�¨ì�� ë³µì�¬ë³¸�� ����ë¿�������. 모ë�� ��ì²��� �� ������ ë³�목ì�� �µê³¼�´ì�� �©ë����. ë§��� ��ì²��� �� ��ë¡��¸ì�¤ë�� �µê³¼�´ì�� ��ê±°ë�� �¤í�¬ë¦½�� ��ì²´ê� 매ì�� ��ë¦� ê²½ì�� ���¹í�� ���� ����ë¥� ì´����� �� ���µë����.
  • 매í�� ��ë¡�ê·¸ë�¨ì�� ì¢�ë£���ë©� �����¼ë� �¤ì�� ������ì§� ���µë����. ��ë²�ê°� �¬ì������ ��ê¹�ì§� ���� ì¡°í��ê°� �¤í�¨í�©ë����.
  • 매í�� ��ë¡�ê·¸ë�¨ì�� ê´��� �¤ì�� ì§����´ê� ë³�ê²½ë������ì§� �¬ë��� ê´�ê³����� ��ë²� �¬ì����(graceful ���� 기í��) �� ���� ì¢�ë£���ê³� �¤ì�� �����©ë����. ì¢�ë£� �� ��ë¡�ê·¸ë�¨ì�� SIGTERM�� ���¡ë��ë©�, 3ì´� �´ë�´ì�� ì¢�ë£���ì§� ���¼ë©´ SIGKILL�� ���¡ë�©ë����.
top

dbd ���� fastdbd: SQL 쿼리

MapType�� dbd ���� fastdbd�� ê²½ì�� MapSource�� �¨ì�� �¸ì��ë¥� ë°��� �¨ì�� ê°��� ë°������� SQL SELECT 문ì������.

�� 문ì�� �¤í�����¤ë©´ �¬ë�ë¥� �°ì�´í�°ë��´ì�¤ë�� ê°�리í�¤ë��ë¡� mod_dbdë¥� 구ì�±í�´ì�� �©ë����.

�� MapType���� �� ê°�ì§� ����ê°� ���µë����. dbd MapType�� �¬ì�©í��ë©� ê°� ë§� ��ì²�ë§��� 쿼리ê°� �¤í����ê³�, fastdbdë¥� �¬ì�©í��ë©� �°ì�´í�°ë��´ì�� ì¡°í��ê°� �´ë����¼ë� ìº����©ë����. �°ë�¼ì�� fastdbdê°� �� �¨ì�¨ì���´ê� ë¹�르ì�ë§�, ��ë²�ê°� �¬ì������ ��ê¹�ì§� �°ì�´í�°ë��´ì�� ë³�ê²� �¬í���� ë°�����ì§� ���µë����.

쿼리ê°� �� �´ì���� ���� ë°�����ë©� ê²°ê³¼ �¸í�¸ì���� 무ì���� ���� �¬ì�©ë�©ë����.

����

RewriteMap myquery "fastdbd:SELECT destination FROM rewrite WHERE source = %s"

ì°¸ê�

쿼리 �´ë��� SQL ì¤�ë¹��� 문ì�� ���´ë�ë¡� �°ì�´í�°ë��´ì�� ���¼ì�´ë��� ���¬ë��ë¯�ë¡� �°ì�´í�°ë��´ì�¤ì�� ������ 모ë�� ê·�ì¹�(����문ì�� 구ë� ��)�� �°ë�¼ì�� �©ë����.

top

����

RewriteMap ì§����´ë�� �¬ë�� ë²� �¬ì�©í�� �� ���µë����. ê°� 매í�� �¨ì���� ���� ������ RewriteMap ì§����´ë�� �¬ì�©í���� �¬ì���� ë§� ���¼ì�� ���¸í�©ë����.

������리ë� 컨í���¤í��(.htaccess ���¼ì�´ë�� <Directory> ë¸�ë¡�)������ ë§µì�� ������ �� ��ì§�ë§� ������리ë� 컨í���¤í�¸ì���� �� ë§µì�� �¬ì������ ê²��� ê°��¥í�©ë����.

°¡´ÉÇÑ ¾ð¾î:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn