Apache ´Â Ãß°¡ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â À¯¿ëÇÑ ¸ðµâµéÀ» Á¦°øÇÕ´Ï´Ù.
À̹ø°Á¿¡¼´Â ApacheÀÇ URL Rewrite ¸ðµâÀ» »ç¿ëÇϱâ À§ÇÑ ÄÄÆÄÀÏ,¼³Ä¡¿Í httpd.confÀÇ ¼³Á¤¹æ¹ý ±×¸®°í Ȱ¿ë¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
Apache ´Ù¿î·Îµå : http://www.apache.org
1. rewrite ¸ðµâÀ» »ç¿ëÇϱâ À§ÇÑ
Apache ÄÄÆÄÀϿɼÇ
Rewrite ¸ðµâÀ» ¾²±âÀ§ÇÑ Apache ÄÄÆÄÀÏ ¿É¼ÇÀº --enable-rewrite ÀÔ´Ï´Ù.
Configure ½ÇÇà½Ã¿¡ --enable-rewrite ¸¸ Ãß°¡ÇϽøé Apache¿¡¼ rewrite ¸ðµâÀ» »ç¿ëÇÒ ÀÖ°Ô µË´Ï´Ù.
[root@superuser root]# ./cofigure prefix=/usr/local/apache2 --enable-rewrite
[root@superuser root]# make
[root@superuser root]# make install
1. Rewrite ¸¦ Àû¿ëÇÒ ¼ö ÀÖ´Â ¹üÀ§
Rewrite ¼³Á¤Àº Server Config, Virtual Host, Directory,
.htaccess ¿¡ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Áï Apache ¼¹ö Àüü¿¡ Global ¼³Á¤°ú ƯÁ¤ °¡»óÈ£½ºÆ®¿¡¸¸ Àû¿ëÇϵµ·Ï ÇÒ¼ö ÀÖ°í Æ¯Á¤ µð·ºÅ丮¿¡¸¸
Àû¿ë½Ãų¼öµµ ÀÖ½À´Ï´Ù.
2. Rewrite ¸ðµâ Áö½ÃÀÚ
¼³Á¤¹®¹ý : RewriteEngine On|Off
Rewriteing ¿£ÁøÀ» »ç¿ëÇÒÁö ¿©ºÎ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±âº»¼³Á¤Àº ´ç¿¬È÷ Off·Î µÇ¾î ÀÖÀ¸¸ç RewriteEngine On À¸·Î ¼³Á¤ÇÏÁö ¾Ê´Â ÀÌ»ó Rewritng ¿£ÁøÀ» Ȱ¼ºÈ ½ÃŰÁö ¾Ê½À´Ï´Ù.
ÇöÀç Apache¿¡¼ ½ÇÇàÁßÀÎ ¸ðµç RewriteRuleÀ» ºñȰ¼ºÈ ½Ãų ¶§ RewriteRule ¶óÀÎÀ» ÁÖ¼®Ã³¸® Çϱ⺸´Ù RewriteEngin Off ·Î ¼³Á¤ÇÏ´Â °ÍÀÌ ´õ °£ÆíÇÏ°í ¿Ã¹Ù¸¥¹æ¹ýÀÔ´Ï´Ù.
¼³Á¤¹®¹ý : RewriteLog FILE-PATH
RewriteLog Áö½ÃÀÚ´Â Rewrite ¿£ÁøÀÇ ·Î±×¸¦ ±×·ÏÇÒ ÆÄÀÏÀ» ÁöÁ¤ÇÕ´Ï´Ù.
RewriteLog ÆÄÀÏÀ» Ç×»ó ³²±â±â º¸´Ù À߸øµÈ Rewrite ±ÔÄ¢µéÀ» µð¹öÅ·ÇÒ ¶§ »ç¿ëÇϱ⸦ ±ÇÀåÇÕ´Ï´Ù. ¾ÆÆÄÄ¡¿Í ¸¶Âù°¡Áö·Î
RewriteLog ÆÄÀϵµ ¹æ¹®ÀÚ¼ö°¡ ¸¹Àº»çÀÌÆ®¿¡¼´Â °¨´ç¸øÇÒ Á¤µµÀÇ ·Î±×ÆÄÀÏÀ» ³²±â±â ¶§¹®¿¡ ½Ã½ºÅÛ ¿©À¯°ø°£ÀÌ ¸¹ÀÌ ¾ø´Â ½Ã½ºÅÛ¿¡¼´Â ÇØ´ç ÆÄƼ¼ÇÀÇ
Çϵå»ç¿ë·ü 100%·Î ÀÎÇÑ Àç¾Ó(?)À» ºÒ·¯¿Ã¼öµµ ÀÖ½À´Ï´Ù. ´ÙÀ½°Á¿¡¼ ¼Ò°³µÉ ·Î±×ÆÄÀÏ ºÐ¼®¿¡¼ ¾ð±ÞÇϰÚÁö¸¸ ·Î±×ÆÄÀÏÀº À¯¿ëÇÑ µð¹ö±ë µµ±¸°¡
µÉ¼ö ÀÖÁö¸¸ À߸ø °ü¸®ÇÏ¸é ½Ã½ºÅÛÀÇ Ä¡¸íÀûÀÎ ¾ÇÀ¸·Î Á¸ÀçÇÒ¼öµµ ÀÖ½À´Ï´Ù.
RewriteLog Áö½ÃÀÚ´Â ¹Ýµå½Ã RewriteLogLevel Áö½ÃÀÚ¿Í ÇÔ²² »ç¿ëÇÏ¿©¾ß µË´Ï´Ù.
¼³Á¤¹®¹ý : RewriteLogLevel Level
RewriteLogLevel Áö½ÃÀÚ´Â RewriteLog Áö½ÃÀÚ·Î ¼³Á¤ÇÑ ·Î±×ÆÄÀÏ¿¡ ±â·ÏÇÒ ·Î±×µé¿¡ ´ëÇØ ¾ó¸¶³ª ÀÚ¼¼ÇÑ ³»¿ëÀ» ·Î±×·Î ³²±æ°ÍÀΰ¡¿¡ ´ëÇØ ¼³Á¤ÇÏ´Â Áö½ÃÀÚÀÔ´Ï´Ù.
±â·ÏÇÒ ·Î±× Level Àº 0 ~ 9±îÁö »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç 0Àº ·Î±×¸¦ ±â·ÏÇÏÁö ¾Ê°Ú´Ù´Â ÀǹÌÀÔ´Ï´Ù. Level ¼ýÀÚ°¡ ³ôÀ»¼ö·Ï ÀÚ¼¼ÇÑ ·Î±×¸¦ ±â·ÏÇÕ´Ï´Ù
¼³Á¤¹®¹ý : RewriteCond TestStirng CondPattern
RewriteCond Áö½ÃÀÚ´Â RewriteRule °ú ÇÔ²² »ç¿ëµÇ´Â ±ÔÄ¢À¸·Î RewriteCond ´ÙÀ½¿¡ ¿À´Â RewriteRuleÀº RewrieteCond ¿¡¼ ¼³Á¤ÇÑ ÆÐÅϰú ÀÏÄ¡ÇØ¾ßÁö¸¸ RewriteRuleµéÀ» ½ÇÇàÇÑ´Ù.
¼³Á¤¹®¹ý : RewriteRule Pattern
Substitution
Rewrite ¸ðµâÀÇ ½ÇÁúÀûÀÎ Rewrite ±ÔÄ¢µéÀ» Àû¿ëÇÏ´Â Áö½ÃÀÚÀÔ´Ï´Ù.
Pattern(Input URL) À» Subtitution(Return URL)·Î º¯°æÇϱâ À§ÇÑ ¸ðµç ±ÔÄ¢µéÀº ÀÌ Áö½ÃÀÚ¸¦ »ç¿ëÇØ¼ ¼³Á¤ÇØ¾ß µË´Ï´Ù.
Pattern(Input URL) ¿¡´Â Perl Á¤±ÔÇ¥Çö½ÄÀ» »ç¿ëÇÒ¼ö Àֱ⠶§¹®¿¡ Input URL ÀÇ ±ÔÄ¢À» À¯¿¬ÇÏ°Ô Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °Á¿¡¼´Â ±âÃÊÀûÀÎ Á¤±ÔÇ¥Çö½Ä »ç¿ë¹æ¹ý¸¸ ´Ù·ç°í Á¤±ÔÇ¥Çö½Ä¿¡ ´ëÇØ ÀÚ¼¼È÷ ¾Ë°í ½ÍÀ¸½Å ºÐÀº Á¤±ÔÇ¥Çö½Ä¿¡ ´ëÇÑ °Á³ª ÀÎÅÍ³Ý ¹®¼¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
Á¤±ÔÇ¥Çö½Ä ±âÃÊ
. : ´Ù¼öÀÇ Çѹ®ÀÚ
? : 0°³ ÀÌ»óÀÇ Çѹ®ÀÚ
* : 0°³ ÀÌ»óÀÇ ¹®ÀÚ ¶Ç´Â ¹®ÀÚ¿
+ : 1°³ ÀÌ»óÀÇ ¹®ÀÚ ¶Ç´Â ¹®ÀÚ¿
(chars) : (, ) ¾ÈÀÇ ¹®ÀÚ¶Ç´Â ¹®ÀÚ¿À» ±×·ìÀ¸·Î ¹½À´Ï´Ù. ÀÌ ¹®ÀÚ±×·ìÀº Substitution(return URL)¿¡¼ $N ÀÇ º¯¼ö·Î Ȱ¿ëÇÒ¼ö ÀÖ½À´Ï´Ï´Ù.
^ : ¹®ÀÚ¿ÀÇ Ã¹¹®(¿)À» ÁöÁ¤ÇÕ´Ï´Ù.
$ : ¹®ÀÚ¿ÀÇ ³¡ ¹®ÀÚ(¿)À» ÁöÁ¤ÇÕ´Ï´Ù.
\(¿ª½½·¡½¬) : Á¤±ÔÇ¥Çö½Ä¿¡¼ Ưº°ÇÑ Àǹ̷Π»ç¿ëµÇ´Â ¹®ÀÚÀÇ Æ¯¼ö±â´ÉÀ» Á¦°ÅÇÕ´Ï´Ù.(¿¹:(, ), [, ] . µî)
{n} : Á¤È®È÷ n¹ø ¹Ýº¹
{n,} : n¹ø ÀÌ»ó ¹Ýº¹
{n,m} : n ÀÌ»ó m ÀÌÇÏ ¹Ýº¹
[chars] : ¹®ÀÚµéÀÇ
¹üÀ§ ¶Ç´Â Ç¥ÇöÇÒ ¼ö ÀÖ´Â ¹®ÀÚµéÀ» ¼³Á¤ÇÕ´Ï´Ù.
¿¹) [a-z] : a ºÎÅÍ z ±îÁöÀÇ ¼Ò¹®ÀÚ, [tT] : ¼Ò¹®ÀÚ t ¶Ç´Â ´ë¹®ÀÚ T
Á¤±ÔÇ¥Çö½Ä ´ÜÃàÇ¥Çöµé
[:alpha:] : ¾ËÆÄºª. [a-zA-Z] ¿Í °°Àº Ç¥Çö
[:alnum:] : ¾ËÆÄºª°ú ¼ýÀÚ. [a-zA-Z0-9] ¿Í °°Àº Ç¥Çö
[:digit:] : ¼ýÀÚ [0-9] ¿Í °°Àº Ç¥Çö
[:upper:] : ´ë¹®ÀÚ. [A-Z] ¿Í °°Àº Ç¥Çö
RewriteRule
Ç÷¡±×
forbidden|F : ¿äûÇÏ´Â ÆäÀÌÁö¸¦ 403 ¿¡·¯·Î redirect ½Ãŵ´Ï´Ù. RedirectRule ÀÌ Àû¿ëµÇ°í ÀÖ´Â ÆäÀÌÁö¸¦ ÀϽÃÀûÀ¸·Î »ç¿ëÁß´ÜÀ» ½ÃŰ°Å³ª »ç¿ëÀÚ·Î ÇÏ¿©±Ý ÆäÀÌÁö Á¢±ÙÀ» ÇÒ¼ö ¾ø°Ô ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù.
¿¹) RewriteRule ^/test /home/blog/html/test.php [F]
»ç¿ëÀÚ°¡ /test ·Î Á¢±ÙÇÒ °æ¿ì 403 ¿¡·¯¸¦ º¸³À´Ï´Ù.
gone|G : ¿äûÇÏ´Â ÆäÀÌÁö¸¦ 410 ¿¡·¯·Î redirect ½Ãŵ´Ï´Ù. 410 ¿¡·¯´Â ÆäÀÌÁö°¡ »ç¶ó ’°Å³ª Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â ¸Þ½ÃÁöÀÔ´Ï´Ù. À̰͵µ forbidden °ú ¸¶Âù°¡Áö·Î RedirectRule ÀÌ Àû¿ëµÇ´ø ÆäÀÌÁö¸¦ ÀϽÃÀûÀ¸·Î ÁߴܽÃų ¶§ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
last|L : ÀÌ Ç÷¡±×°¡ Àû¿ëµÇ¸é µÚ¿¡ ¾î¶² ·êÀÌ ÀÖ´õ¶óµµ ÀÌ·ê ¾Æ·¡ÀÇ ±ÔÄ¢µéÀº Àû¿ëµÇÁö ¾Ê°í RewriteRule À» ºüÁ®³ª°¡°Ô µË´Ï´Ù. C, Perl, PHP ÇÁ·Î±×·¥¿¡¼ ·çÇÁ¸¦ ºüÁ®³ª°¡´Â break ¿Í °°Àº Àǹ̸¦ °¡Áý´Ï´Ù.
chain|C : ÀÌ Ç÷¡±×ÀÇ °á°ú¸¦ ´ÙÀ½ RewriteRule ÀÇ input °ªÀ¸·Î »ç¿ëÇÕ´Ï´Ù.
¿¹)
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.domain\.com(.*)
/home/$1/public_html$2
ÀÌ ·êÀº »ç¿ëÀÚ È¨ÀÇ µµ¸ÞÀÎÀ» 2Â÷ µµ¸ÞÀÎÀ¸·Î ÀÚµ¿¼³Á¤ÇØ ÁÙ ¶§ ¸¹ÀÌ ¾²´Â ·êÀÔ´Ï´Ù. RewriteRuleÀÇ inputÀº µµ¸ÞÀÎÀ» Á¦¿ÜÇÑ URI ¸¦ ÀνÄÇϱ⠶§¹®¿¡ µµ¸ÞÀαîÁö ÀνÄÀ» ½ÃÄѼ ´ÙÀ½ RewriteRule ·Î üũ¸¦ Çϱâ À§ÇØ »ç¿ëÇÑ °ÍÀÔ´Ï´Ù.
Áï http://user_id.domain.com/hello.html
À̶õ ¿äûÀÌ µé¾î¿À¸é
/home/user_id/public_html/hello.html ·Î redirect ½ÃÄÑÁÝ´Ï´Ù. À§¿Í °°ÀÌ 2Â÷ µµ¸ÞÀÎÀ» ÀÌ¿ëÇØ
°èÁ¤ »ç¿ëÀÚÀÇ È¨À» ÁöÁ¤Çϱâ À§Çؼ´Â DNS ¼¼ÆÃÀÌ ¼±ÇàµÇ¾î¾ß µË´Ï´Ù.
RwriteRule
¼³Á¤¿¹
1. http://yourdomain.com/user_id -> http://yourdomain.com/home.php?id=user_id
RewriteRule ^/([a-zA-Z0-9])$ /home/user_id/public_html/home.php?id=$1
¼³¸í : µµ¸ÞÀÎ(http://yourdomain.com) µÚ¿¡ ¿À´Â ¿µ¹®¼ýÀÚ·ÎµÈ ¹®ÀÚ¿À» ÁöÁ¤ÇÏ¸é¼ ±×·ìÀ¸·Î ¹¾ú½À´Ï´Ù. ÀÌ·¸°Ô ±×·ìÀ¸·Î ¼³Á¤µÈ ¹®ÀÚ¿ Pattern Àº Substitution(return URL) ¿¡¼ $1 À̶ó´Â º¯¼ö·Î ¹Þ¾Æ »ç¿ëÇÏ°Ô µË´Ï´Ù. Áï http://yourdomain.com/superuser ¶ó´Â ÆäÀÌÁö ¿äûÀÌ µé¾î¿À¸é ½ÇÁ¦·Î´Â http://yourdomain.com/home.php?id=superuser ¶ó´Â ÆäÀÌÁö·Î redirect ½ÃÄÑÁÝ´Ï´Ù. ºí·Î±×³ª Ä«Æä(µ¿È£È¸) »çÀÌÆ®¿¡¼ ºí·Î±× »ç¿ëÀÚÀÇ ID ·Î °³ÀÎ ºí·Î±× ÁÖ¼Ò¸¦ ºÎ¿©ÇÒ ¶§ http://blog.com/user_id ·Î ºÎ¿©ÇØ ÁÖÁö¸¸ ½ÇÁ¦ ½ÇÇàµÇ´Â ÆÄÀÏÀº ÀÌ¿Í °°ÀÌ redirect ½ÃÄÑÁÖ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
2. http://yourdomain.com/daum -> http://www.daum.net
RewriteRule ^/daum$ -> http://www.daum.net
¼³¸í : http://yourdomain.com/daum ¶ó´Â ÆäÀÌÁö ¿äûÀÌ µé¾î¿À¸é µµ¸ÞÀÎÀÌ ´Ù¸¥ http://www.daum.net À̶ó´Â ÆäÀÌÁö·Î redirect ½ÃÄÑÁÝ´Ï´Ù.
¼³Á¤¹®¹ý : RewriteOptions Options
ÇöÀç »ç¿ëÇÒ ¼ö ÀÖ´Â option Àº MaxRedirects=number ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¼³Á¤µÈ number°ª¿¡ µµ´ÞÇÏ°Ô µÇ¸é 500 Internal Server Error ¸¦ ³²±â°í RewriteRuleÀ» Á¾·áÇÕ´Ï´Ù. À߸øµÈ RewriteRule¿¡ ÀÇÇÑ ¹«ÇÑ ·çÇÁ¸¦ ¹æÁöÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÇ´Âµ¥ ½Ã½ºÅÛÀÌ ÀÌÀ¯¾øÀÌ ´Ù¿îµÈ´Ù°Å³ª ÇÒ ¶§ ÀÌ ¿É¼Ç°ú Log ±â·ÏÀ» Âü°íÇÏ¿© µð¹ö±ë ¹× ½Ã½ºÅÛ ´Ù¿îÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Áö»çÀÚ´Â Apache 2.0.45 À̻󿡼 »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
3. ½ÇÁ¦ Àû¿ë¿¹
°¡»óÈ£½ºÆ® www.superuser.co.kr ¿¡ ´ëÇØ Rewrite RuleÀ» Àû¿ëÇÑ ¿¹ÀÔ´Ï´Ù. ÀÌ ºÎºÐÀº ½ÇÁ¦ ¿î¿µµÇ´Â ºí·Î±× »çÀÌÆ®¸¦ À§ÇØ RewriteRule À» Àû¿ëÇÑ ¿¹ÀÔ´Ï´Ù.
<VirtualHost 211.206.201.xxx>
DocumentRoot
/home/blog/html
ServerName blog.xxx.ac.kr
# ¿©±â±îÁö´Â ÀϹÝÀûÀÎ °¡»óÈ£½ºÆ® ¼³Á¤ÀÔ´Ï´Ù.
RewriteEngine on
# RewriteRuleÀ» »ç¿ëÇϱâ
À§ÇØ On À¸·Î ¼³Á¤ÇÕ´Ï´Ù.
RewriteLog
/home/blog/rewrite_log_admin3.log
RewriteLogLevel 9
# Rewrite ½ÇÇàÁß Log¸¦ ³²±â±â
À§ÇØ ·Î±×ÆÄÀϰú ·Î±×·¹º§À» ÁöÁ¤Çß½À´Ï´Ù.
RewriteRule ^/tb/([a-zA-Z0-9]+)/([0-9]+)$
/home/blog/html/blog/trackback\.php\?id=$1&post_no=$2
# À§¼³Á¤Àº ºí·Î±×¿¡ µî·ÏµÈ Æ÷½ºÆ®ÀÇ
Æ®·¢¹é ÁÖ¼Ò¸¦ ºÎ¿©Çϱâ À§ÇØ ¼³Á¤ÇÑ RewriteRule ·Î½á Pattern¿¡ µÎ°³ÀÇ ±×·ìÀÌ Á¸ÀçÇϰí return URL¿¡ ¼ø¼´ë·Î °¢ ±×·ìÀ»
$1 °ú $2 ·Î ¹Þ¾Æ GET º¯¼ö·Î ġȯÇѰÍÀÔ´Ï´Ù.
RewriteRule
^/xml/([a-zA-Z0-9]+)$ /home/blog/html/blog/rss_feed\.php\?id=$1
# °¢ºí·Î±×º° RSS ÁÖ¼Ò¸¦ ½ÇÁ¦ ÆÄÀÏ·Î
ÁöÁ¤ÇѰÍÀÔ´Ï´Ù.
RewriteCond
%{REQUEST_URI} !^/admin$
RewriteRule
^/([a-zA-Z0-9]+)$ /home/blog/html/blog/main\.php?id=$1
# ¸ÕÀú RewriteCond ·Î ½ÇÁ¦
Á¸ÀçÇÏ´Â admin À̶ó´Â µð·ºÅ丮¸¦ À̾îÁö´Â RewriteRule¿¡¼ Á¦¿Ü½Ã۰í http://domain.com/user_id ·ÎÀÇ ¿äûÀ» ¸ðµÎ
/home/blog/html/blog/main.php?id=user_id·Î redirect ½ÃŰ´Â ·êÀÔ´Ï´Ù.
RewriteRule ^/([a-zA-Z0-9]+)/([0-9]+)$
/home/blog/html/blog/main\.php\?id=$1&post_no=$2
# /user_id/1345 ·Î ¿äûÇÏ´Â
ÆäÀÌÁö¸¦ /home/blog/html/blog/main.php?id=user_id&post_no=1345 ·Î redirect ½ÃŰ´Â ·êÀÔ´Ï´Ù.
</VirtualHost>
4. ¸¶Ä¡¸é¼
À§¿¡¼ ¾ð±ÞÇÑ RewriteRule »Ó¸¸ ¾Æ´Ï¶ó ¿©·¯°¡Áö »óȲ¿¡¼ RewriteRuleÀ» Àß È°¿ëÇÑ´Ù¸é ¾ÆÁÖ À¯¿ëÇÏ°Ô À¥ÆäÀÌÁö¸¦ ÄÁÆ®·Ñ
ÇÒ¼ö ÀÖ½À´Ï´Ù. RewriteRule À» ¼¼ÆÃÇϱâ ÀÌÀü¿¡ ¹Ýµå½Ã Á¤±ÔÇ¥Çå½Ä¿¡ ´ëÇØ ¾î´ÀÁ¤µµ °øºÎÇÑÈÄ Àû¿ëÇØ º¸½Ç °ÍÀ» ±ÇÇÕ´Ï´Ù.