mod_rewrite를 통한 블로그 주소이동

2010/02/05 01:08 | Posted by Prescott

안녕하세요. Prescott 입니다.
검색을 통한 블로그 게시물 접근 에러 수정을 완료하였습니다.


PHP스터디용 웹 호스팅 신청으로 블로그 주소가 http://prescott.pe.kr 에서 http://blog.prescott.pe.kr 로 변경으로 인해,
약 3달가량 포털사이트에 검색결과로 뜨는 제 블로그의 모든 게시물들이 표시되지 않는 문제가 있었습니다.


사실 주소 변경할 때 부터 블로그 게시물 링크문제는, Apache의 mod_rewrite 모듈을 이용하여 수정 할 수 있었다는 사실을 알고 있었습니다.
하지만 mod_rewrite 모듈은, perl의 정규표현식 사용으로 유연하고 강력하다는 장점과 동시에 저같은 Apache를 많이 다루어보지 못한 초보자에게는 해당 모듈의 사용이 너무나도 어려워서 여러번 시도 끝에 포기를 했었습니다.

그러나, 최근 mod_rewrite 모듈의 사용방법을 다시 검색하다가...
'부사리 님의 htaccess_RewriteRule을 이용한 주소 이동' 이라는 게시물을 통해 아주 간단하게 적용을 마쳤습니다.






적용과정을 설명해드리자면...


제 웹 계정의 루트 디렉토리가 www인 관계로,
RewriteRule ^(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L] 을 적용하는 경우
http://prescott.pe.kr/request 의 요청을
http://blog.prescott.pe.kr/www/request 으로 넘기는 문제가 발생했었습니다.

제 웹호스팅의 아파치 설정이 DocumentRoot가 /www 으로 설정되어있어서 발생한 문제인 듯 싶어, 앞 www 부분을 동적으로 제거하는 방법을 '아파치 URL 재작성 지침서' 에서 찾았습니다.

변수 $1값인 (.*) 부분의 앞에다가 제거할 부분을 작성하면 되는것입니다.

즉,
<적용전>
RewriteEngine on
RewriteRule ^(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L]

요청 : http://prescott.pe.kr/request
반환 : http://blog.prescott.pe.kr/www/request


<적용후>
RewriteEngine on
RewriteRule ^www/(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L]

요청 : http://prescott.pe.kr/request
반환 : http://blog.prescott.pe.kr/request


아, 참고로 'R=301' 의 의미는 'moved permanently' 이란 의미로,
추후 검색봇이 http://prescott.pe.kr/request 이란 주소로 접근을 하면
http://blog.prescott.pe.kr/request 로 변경되었다는것을 알려주고, 해당 검색사이트에 게재된 게시물 주소를 http://blog.prescott.pe.kr/request 으로 변경해줍니다.

[L]의 의미는 C의 break 문과 비슷한 의미입니다. 뒤에 어떠한 RewriteRule이 있더라도 적용되지 않고 빠져나온다는 의미이죠.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

이전 1 2 3 4 5 6 7 8 ... 60 다음