2013년 12월 1일 일요일

[Linux] 주소 앞에 www 자동으로 붙이기

문서제작: 임현 (byulkorea@empal.com)

안녕하세요 Dopesoul 입니다. 고3이 된터라 시간이 많이 없네요..
그런데 요전에 알게된 좋은 팁인것같아 문서로 작성해 봅니다.
아무리 검색해도 보이질않더군요.

앞으로 강좌쓸때 교과서식으로 진행합니다^^; 목차 개요 목적 방법 결론 추신
등으로 진행됩니다.
경어체 , 존체는 생략하며 간단한 어투로 썼습니다. 도움되시길

1. 목차

- Redirect 지시자의 이해
- 정규표현식의 간단한 이해
- www 를 붙여주는 목적
- www 를 자동으로 붙이는 방법
- 이로운점 (결론)
- 주의사항

2-1. Redirect 지시자의 이해

http://apache.kr.net/documents/mod_alias_k.html

에 보면 자세히 나와있으나 다시 설명하자면 단어 그대로이다
다시금 URL 을 바꾸도록 하는것이다.
원래의 용도는 서로 다른 html 이 서로다른 서버에 존재할때 그 여러개를
한개의 페이지로 구성하는(?) 데 목적이 있는듯 보인다.
하지만 우리는 이것을 이용하여 www 를 자동으로 붙이는 목적으로 쓰고자한다.
혹은 URL 을 포워딩하는데 쓰고자 한다.
이것을 응용하면 간이 URL Foward 도 할수 있을것같다(wo.to 같은)

우리는 여기서 정규표현식을 쓸수있는 Redirectmatch 지시자를 쓸것이며
원론적인것을 이해하기보다는 실전에 적용할 요량으로 배워보고자 한다.

2-2. 정규표현식은?

표준 정규식(standard regular expression) 이라고하는 정규표현식의 가장 간단한
예는 와일드카드가 있다.

# ls -al *.jpg

는 앞의 문자는 * 로 치환되고 (자릿수 및 대소문자 가리지 않음) 확장자가
jpg 인 모든 파일을 열람하고자할때 쓸수있다.

이처럼 정규표현식은 수많은 예외들을 표현문자로서 대치하여 경우의 수를 처리가능하게
만드는것이다.
개발할때에는 수많은 예외를 곰곰히 생각하며 표현식을 작성한다. 예를들면
이메일주소에는 특수문자가 들어갈수없고, 뭐 숫자로 시작할수 없으며..
a 부터 z 까지의 문자 및 1-0 까지의 숫자로 이루어질수 있다는 규칙을 정규표현식으로써
표현하는것이다.

정규표현식으로 예외처리 및 URL 뒷자리를 치환하는 작업을 할것이다.

2-3. www 를 왜 붙일까? 도대체 왜?

http://example.comhttp://www.example.com 은 다른페이지일 가능성이 있다.
(실제로 많은서버는 같은것으로 본다)
그러나 php 세션처리시 서로 다른 케이스로 구분한다고 알고있다.
제로보드 로그인도 가끔식 example.com 과 www.example.com 에서 서로다른 결과를 출력하거나
아무리 로그인해도 로그인이 되지않는 기이한 경우가 발생한다. 나는 이것을 www 의 차이에서
기인한다고 생각하며, 검색해본결과 어느정도 일리가 있다는 결론을 유추할수 있었다.

또한 이미지에 기인할수 있다. 여러가지 주소보다는 언제나 일관되도록 www 를 붙여줌으로써
일관된 주소를 각인시킬수 있다. 또한 이것이 webserver 라는 확고한 인식을 심어줄수도 있다
(위험할수도 있겠지만)

2-4. 그렇다면 어떻게 붙일까? 무지 궁금하다.

붙이는 방법은 엄청난 꽁수(?) 가 동원된다. 내가 oops 에 이 사항을 질문했을때 어떤분이 달아준
답변에 있는 내용을 참고로 했다. 가상호스팅을 써야한다.

<VirtualHost 210.115.55.150>
ServerName www.abc.com
DocumentRoot /home/dopesoul/public_html
</VirtualHost>

이 부분은 www.abc.com 에서만 동작된다. 만약 이부분만 있다면 http://abc.com 으로는 접속이
불가능하다. 대부분의 서버는 Serveralias 를 이용해서 www.abc.com 으로도 접속가능하게 했다.

<VirtualHost 210.115.55.150>
ServerName rootguide.com
RedirectMatch /(.*)$ http://www.abc.com/$1
</VirtualHost>

이부분은 rootguide.com 으로 접속했을때의 처리부분이다. 리다이렉트를 이용하여 다시 www.abc.com 으로 포워딩한다.
/ 뒤의 정규표현식이 의미하는바는 모든 문자이다.(숫자 특수문자 등등..) 그리고 그것을 $ 로 지정하고 $1 으로써 해당문자를 copy paste 하는것이다.

만약 http://abc.com/example/folder/zboard.php 뭐 이런식의 주소가 있다면

example/folder/zboard.php 부분이 $1 으로 치환되며 이것은 다시

http://www.abc.com/example/folder/zboard.php 으로 리다이렉팅되어 종국에는 www 가 붙게되는것이다.

간단하지않은가? 나는 2일동안 이곳저곳 검색했었는데 저 내용을 보는순간 맥이 풀렸다.
마치 어려운 퍼즐의 해답을 지나가던 사람 혹은 지하철 옆자리에서 보던사람이
" 어 이거 이렇게 하면 돼잖아요? " 라고 할때의 허무함과도 같은.. 그런 기분이었다.

2-5. 활용법?

이것을 응용하면 대단한? 서비스도 가능할듯도 싶다..
뭐 그리 대단하진않아도 wo.to 와 같은 서비스를 뒤의 URL 까지 처리가능한? 그런것..
wo.to 는 다른 cgi 를 이용하는듯 보이지만..
어쨋든 무한한 활용이 가능하지 않을까 생각해본다. 저 2줄의 스크립트가.

3. 결론

결론은... "쓸만하네" 이다.

4. 주의사항

아직 마땅한 주의사항은 발견하지 못했다. 혹시 충고할점 있으면 리포팅 바란다.
(리플로)

5. 저작권

작성자에게 있으며, 원한다면 얼마든지 바꾸어써도 좋다. 그러나 자신의 문서처럼은
꾸미지 말아달라. 또한 마음대로 퍼가더라도 작자의 이름은 지우지 말라.
키보드를 뚜드린 값이라 생각해달라.(귀차니즘의 강좌작성자들을 대신해서)

댓글 없음:

댓글 쓰기