분류:: 컴퓨터/인터넷 << 리눅스/서버

[아파치] Apache Rewrite 모듈을 이용한 긴주소(URL)를 짧은 주소(URL)로 바꾸기


[아파치] Apache Rewrite 모듈을 이용한 긴주소(URL)를 짧은 주소(URL)로 바꾸기~


  출처: http://sexy.pe.kr/tc/137
  참고:  http://www.hwangc.com/10-useful-htaccess-rule/# .htaccess-wordpress을 위한  htaccess에서 사용한 예제들


요즘 블로그나 게시판등을 보면 http://www.domain.co.kr/notice/12 형태의 주소를 많이 보게 되는데,
불필요한 파일명을 노출할 필요도 없고, URL이 간략하고 명료해서 오히려 알아보기도 쉽다.

예전부터 짧은 주소로 바꿔보고 싶었으나 이에 대한 정보가 전혀 없어 미루다가 최근에 홈페이지 이전작업하면서,
알게되어 정보공유 차원에서 포스팅 하기로 합니다~

우선 저의 서버환경은 아파치(Apache), Mysql 5, PHP 5.2.17 이며, 리눅스 서버 호스팅 서비스중 입니다.

짧은주소 변환을 위하여 아파치 rewrite 모듈을 이용해야하기 때문에 아파치 서버에 rewrite 모듈이 설치되어 있어야 합니다.

phpinfo() 함수를 통하여 Loaded Modules 항목에 mod_rewrite 모듈 이름이 있다면 사용가능한 상태입니다.

또한 rewrite 서비스를 적용하기 위해서는 서버별 설정(httpd.conf), 가상호스트별 설정, 디렉토리별 설정(.htaccess)울 할 수 있는데, .htaccess에 설정하는 방법을 알아보겠습니다.


.htaccess (hypertext access)파일이 무엇인가?

숨김파일로서 웹서버 디렉토리 권한을 설정하는 파일이며, 특정한 디렉토리에 위치하며, 모든 하위 디렉토리에 영향을 미침

1. RewriteEngine 활성화

rewrite 모듈은 기본적으로 Off 되어 있으며, 사용하고자 하는 경우 On으로 활성화 해주어야 한다.

문법: RewriteEngine [On|Off]

2. RewriteCond 설정

RewriteCond에서 설정한 패턴과 일치하는 경우에 다음에 오는 RewriteRule들을 실행한다.

문법: RewriteCond (String) (Pattern/Instruction) [flag]

(String) : 입력된 문자열(서버변수 사용가능)이 Pattern(펄정규식)과 일치하거나 Instruction(명령어)와 일치하는 경우 결과를 RewriteRule로 넘긴다.

3. RewriteRule 설정

특정 패턴에 해당되는 URL을 지정된 규칙에 따라 변환한다.

문법: RewriteRule (Pattern) (Substitution) [flag]


* 사용가능한 서버변수

HTTP Headers connection & request server internals date & time specials
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REMOTE_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
HTTPS

* 명령어(instruction)

-d 디렉토리를 의미
-f 파일을 의미
-l 심볼릭링크를 의미
-d not을 의미(!-d,!-f,!-l)

* 플래그(flag)

F | forbidden 요청페이지를 403 에러 페이지로 redirect 시킴
G | gone 요청페이지를 410 에러 페이지로 redirect 시킴
L | last 다음의 Rule을 무시하고 종료
C | chain 결과를 다음 Rule의 input값으로 넘김
N 새로운 Rule이 시작
R 무조건 Redirection 시킴
NC 대소문자를 구별하지 않음
OR OR
QSA Cond의 내용을 지난결과에 덧붙임
NE 출력문자에 특수문자가 HexCode가 있는경우

* 그외 옵션설정


문법: RewriteBase URL-path

기본 디렉토리를 설정, 이후 지정되는 경로는 기본 디렉토리를 기반으로 설정된다.


내용참조: http://httpd.apache.org/docs/current/mod/mod_rewrite.html





댓 글


Name Password
내 용
싸인펜의 사진창고    인터넷 자료창고   설계자료 모음