helloboy님의 블로그에 정리가 잘 되어있길래 퍼왔습니다.
전 우분투를 써서 설정과 설치가 좀 다르지만,
잘 몰랐던 htaccess rewrite module에 대해서 이제야 대충 감이 잡히네요 ^^
Apache rewrite Module
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
설정문법 : RewriteEngine On|Off
Rewriteing 엔진을 사용할지 여부를 설정합니다. 기본설정은 당연히 Off로 되어 있으며 RewriteEngine On 으로 설정하지 않는 이상 Rewritng 엔진을 활성화 시키지 않습니다.
현재 Apache에서 실행중인 모든 RewriteRule을 비활성화 시킬 때 RewriteRule 라인을 주석처리 하기보다 RewriteEngin Off 로 설정하는 것이 더 간편하고 올바른방법입니다.
RewreteLog
설정문법 : RewriteLog FILE-PATH
RewriteLog 지시자는 Rewrite 엔진의 로그를 그록할 파일을 지정합니다.
RewriteLog
파일을 항상 남기기 보다 잘못된 Rewrite 규칙들을 디버킹할 때 사용하기를 권장합니다. 아파치와 마찬가지로
RewriteLog 파일도 방문자수가 많은사이트에서는 감당못할 정도의 로그파일을 남기기 때문에 시스템 여유공간이 많이 없는
시스템에서는 해당 파티션의 하드사용률 100%로 인한 재앙(?)을 불러올수도 있습니다. 다음강좌에서 소개될 로그파일 분석에서
언급하겠지만 로그파일은 유용한 디버깅 도구가 될수 있지만 잘못 관리하면 시스템의 치명적인 악으로 존재할수도 있습니다.
RewriteLog 지시자는 반드시 RewriteLogLevel 지시자와 함께 사용하여야 됩니다.
RewriteLogLevel
설정문법 : RewriteLogLevel Level
RewriteLogLevel 지시자는 RewriteLog 지시자로 설정한 로그파일에 기록할 로그들에 대해 얼마나 자세한 내용을 로그로 남길것인가에 대해 설정하는 지시자입니다.
기록할 로그 Level 은 0 ~ 9까지 사용할 수 있으며 0은 로그를 기록하지 않겠다는 의미입니다. Level 숫자가 높을수록 자세한 로그를 기록합니다
RewriteCond
설정문법 : RewriteCond TestStirng CondPattern
RewriteCond 지시자는 RewriteRule 과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewrieteCond 에서 설정한 패턴과 일치해야지만 RewriteRule들을 실행한다.
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
설정문법 : RewriteOptions Options
현재 사용할 수 있는 option 은 MaxRedirects=number 를 사용할 수 있으며 설정된 number값에 도달하게 되면 500 Internal Server Error 를 남기고 RewriteRule을 종료합니다.
잘못된 RewriteRule에 의한 무한 루프를 방지하기 위한 목적으로 사용되는데 시스템이 이유없이 다운된다거나 할 때 이 옵션과 Log 기록을 참고하여 디버깅 및 시스템 다운을 방지할 수 있습니다.
이 지사자는 Apache 2.0.45 이상에서 사용할 수 있습니다.
3. 실제 적용예
가상호스트 blog.xxx.ac.kr 에 대해 Rewrite Ru
댓글을 달아 주세요
우리나라 경찰 진짜 뭐하는건지 참~ 한심하게 짝이 없군요..
자기들 자식이 저꼴당해봐야 정신차리지..
저동영상 보니 화가 너무 나네요..
네, 저거보고 화도나고 어이가 없었습니다 ㅠ,.ㅜ;
과연 애기키우실때 카시트나 하셨는지요 이렇게 언론에 휘둘리다간 우민되기 십상입니다. 언론은 언제나 자극적인것만 취재하죠. 평범하게 교통사고나 암으로 죽는경우가 더 많지만 언론에서는 특이케이스만 보도하니까 이상하게도 특이케이스만 주의하게된다는
물론 언론에서 요상한 것만 들춰내기는 합니다만, 저건 아니지 않습니까...
ps. 그리고 카시트는 꼭합니다 ㅎㅎ 뒷자리에요~
비판도 좋습니다...하지만 좀 알고 비판을 해도 하시기 바랍니다.
사회를 이리도 각박하게 만든것은 어른들입니다..항상 이유는 다르지만 모든 어른들이 어는정도의 책임감만 가진다면 저런 사건은 발생하지도 않았을 것입니다..항상 말로야 무슨 말을 못합니까.행동이 중요하다 생각합니다..경제의 안정을 위해 이명박을 대통령으로 뽑고 나의 경제적 이익을 위해 소수자나 경제적 약자를 합법적으로 제거할 수 있는 사회에서 그들이 이 사회에서 죽지않고 살아가려면 저런방법밖에 없다는 것이 그리도 이해가 되지 않으시는지 모르겠습니다.백날 치안대책만 세우면 뭐합니까..대책을 세우는 속도보다 사회적 안전망이 해체되는 속도가 몇 배는 빠른것이 우리나라 현실입니다.
뭘 잘 모르고 비판했다는 말씀이신지~ ㅜㅜ
같은 이유 때문인지는 모르겠지만.. 미국에서는 그래서 학교에 미리 아이를 데리러 올 사람 목록을 등록해 놔야 하더군요. 부모를 포함해 급할 때 대신 데리러 올 수 있는 사람을 올려놓고 그 사람이 오지 않는 경우 아이를 내주지 않습니다.
물론 등교때도 등록된 사람이 학교에 데려다 줘야 하구요. 철저하게 그렇게 하죠.
한국도 그렇게 될 날이 머지 않은 것 같네요.
넴, 울나라에서 제도적으로는 언제 그렇게 될지 모르지만,
자발적으로 그러케 해야할거 같아요 ㅠ,.ㅜ;
많이 걱정스러우셨겠네요. 저도 경찰의 태도에는 화가 날 수밖에 없지만 "그나저나 세상이 너무 각박해져서" 라는 말에는 동의하지 않습니다.
사회 전반적인 시스템이 발달하지 않았던 옛날에는 저런 사건은 더욱 많았을 것이며, 다만 언론 매체의 발달 미비로 인해 보도가 되지 않았을 뿐입니다. 혹은 더욱 커다란 이슈들 때문에 그런 거죠. 다들 경제 경제 하지만 그나마 우리가 잘 살기 때문에 점점 더 구체적인 일에 신경을 쓰게 되고 이런 일이 보도가 되는것 아닐까요.
또 다른 예로 성추행 관련 법이 제정되기 전에는 여성들이 당해도 하소연 할 길이 없어 출근 길 지하철은 물론이고, 직장에서도 대놓고 성희롱,추행 당했을 거고요. 죄없는 사람 잡아다 고문 시켜서 범인으로 만드는 것도 쉬웠죠.
제가 이렇게 사소한 것에 딴지를 거는 이유는요. 우리가 무심결에 기자들이 쓰는 "현재 서민 경제가 어렵다보니.." 등등의 말을 자주 아무런 비판없이 쓰는 것 같아서 입니다. 이런 말들이 모이다보면 어느덧 기정 사실 처럼 받아들여지게 되고, 정치인들은 이런 걸 잘 활용하잖아요. 마치 한번 전라도에 가본 적도 없는 사람들이 전라도 사람들은 어떻다드니 하게 되는 것처럼 말이죠.
여튼 '각박'이라는 말이 인심을 뜻하는게 아니라 범죄등을 의미하는 거라면, 우리나라는 예전보다는 덜 각박해졌다고 봅니다.
그렇다면 다행인거지만,
체감하기로는 주위에서 범죄가 매우 많이 발생되는 느낌입니다... ㅠㅜ
음.. 여기 리플은 살짝 무섭네~ ^-^;;;
필자가 사회가 각박해 진 것 같다고 하는데, 좀 알고 비판을 하라고 하지 않나 언론 플레이에 놀아난다고 하질 않나..
뭐, 우리 나이가 이 맘 때가 되니, 이런 사건들에 관심을 갖게 되고 (물론 언론이 주도 하고 있다지만 횟수를 얘기 하는게 아니라 범인의 행위나 경찰의 태도는 사실이지 않은가?) 많은 나이는 아니지만 우리 어렸을 적에는 밤 늦게 친구들과 어울리고, 친구들과 산속에 들어가서 칡 캐고 놀던 때 보다 각박해 졌다는 것 아닌가?
이런 사회를 필자가 만들었나? 뭘 알고 비판하고 언론에 놀아나지 말라고 하는 것인지 원...
웅, 나 이제 이슈 따라가기 그만하려구

근데 이 뉴스는 너무 쇼크여서 나도 모르게 그만