본문 바로가기

Tip

검색엔진 친화적 URL

========================================================================================

**삼형제라는 분이 부탁을 하셔서 허접한 내용이나마 글을 씁니다..

이전에 한 번 올라왔었던 '야후스타일 URL'에 관련된 내용으로, ReWrite 엔진 대신
ForceType과 PATH_INFO를 이용한 방법입니다. 야후스타일 URL은 흔히 검색엔진 친화적
URL이라고 하는데, 이런 이름이 붙은 이유는 검색 엔진들이 ?가 포함된 URL을 싫어하기(했
기) 때문입니다..


목표는, 이런 복잡한 URL을

http://myhost.com/zboard.php?id=main_story&page=1&sn1=&divpage=1
&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=3959


이렇게 단순화시키는 것입니다.

http://myhost.com/Board/ZeroReaD3959.html

1. ForceType

ForceType은 서버에 있는 파일들 중 특정한 확장자를 특정 MIME 형식으로 강제하는 아파
치 지시자입니다. 예를 들어 확장자가 html이나 htm인 HTML 파일은 기본적으로 text/html
으로 브라우저에 전달되나, ForceType을 이용하면 그 외의 형식으로 전달되게 할 수 있습니
다.

야후 스타일 URL을 위해 ForceType을 쓰는 이유는, 위의 예의 경우 Board가 zboard.php를
대신하게 만들어야 하기 때문입니다. 즉 php 코드가 들어 있는 Board라는 파일이 php
스크립트로써 실행되게 만들어야 하는 것입니다. 이를 위한 ForceType 지시자의 형태는 다
음과 같습니다.


ForceType application/x-httpd-php


Board라는 파일에 대한 요청을 받았을 때, MIME 형식을 application/x-httpd-php로 해서 처
리하라는 뜻입니다. 이러한 구문은 아파치 서버 자체의 설정(httpd.conf)의 등에
넣어도 되지만, 웹 호스팅 등 서버 설정을 바꿀 수 없는 경우 그리고 설정 변경의 용이성을 생
각한다면 Board가 있는 디렉토리의 .htaccess 에 넣는 것이 더 나은 방법일 것입니다.

2. ForceType 테스트

우선 빈 텍스트 문서를 열고, 위에 나온 .. 부분을 그대로 입력한 후
.htaccess라는 이름으로 웹 서버의 임의의 디렉토리에 저장합니다. .htaccess가 이미 존재
한다면 추가해 주면 되구요. (여기서는 웹 사이트의 루트 디렉토리를 기준으로 하겠습니다.
그리고 웹 사이트는 http://localhost/라고 가정하겠습니다)

그런 다음 , 아래를 그 디렉토리에 Board라는 이름으로 저장합니다. 확장자 .php를 붙이면
안 됩니다.

항목 중 AllowOverride를 All로 해주면
됩니다. 예를 들면 다음과 같습니다(루트 디렉토리의 경우)

[CODE] Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all [/CODE]

실패의 경우 아마 AllowOverride가 None일 것입니다. 그것을 All로 바꿔주면 ForceType을
비롯한 다른 설정들의 변경이 가능합니다.

3. PATH_INFO

$PATH_INFO는 PHP가 설정해 주는 전역 변수로, URL 중 스크립트 이름 다음부터 물음표 전
까지의 모든 것들을 담고 있습니다.

Board 파일을 다음과 같이 수정해 봅시다.

[CODE]
반응형