Apache HTTP Server Version 2.0
아파치 모듈 mod_alias
설명: | 파일시스템의 다른 부분들을 문서 계층구조에 포함하고, URL 리다이렉션을 제공한다 |
---|---|
상태: | Base |
모듈명: | alias_module |
소스파일: | mod_alias.c |
요약
이 모듈이 제공하는 지시어들을 사용하여 서버가 요청을
받을때 URL을 수정하거나 조작할 수 있다. Alias
와 ScriptAlias
지시어는 URL을
파일시스템 경로로 대응한다. 그래서 DocumentRoot
아래에 없는 내용을
웹으로 서비스할 수 있다. 또, ScriptAlias
지시어는 지정한
디렉토리에 CGI 스크립트밖에 없다고 알린다.
Redirect
지시어는
클라이언트에게 다른 URL로 새로운 요청을 하도록 지시한다.
자원을 새로운 장소로 옮긴 경우 자주 사용한다.
mod_alias
는 간단한 URL 조작을 위해
설계되었다. 질의문자열 조작과 같은 복잡한 작업은
mod_rewrite
가 제공하는 기능을 이용하라.
처리 순서
서로 다른 사용장소에서 Alias와 Redirect를 사용하면 다른 지시어와
같이 표준 결합 방법에
따라 처리한다. 그러나 같은 사용장소에 (예를 들어, 같은 <VirtualHost>
섹션에)
Alias와 Redirect를 사용하면 아래 순서대로 처리한다.
먼저 모든 Redirect를 처리한 후 Alias를 처리한다. 그래서
Redirect
나 RedirectMatch
에 해당하는 요청은
절대로 Alias하지 않는다. 그리고 Alias와 Redirect는 설정파일에서
첫번째로 나오는 것을 사용한다.
그래서 여러 지시어가 동일한 하위경로에 해당하는 경우 모든 지시어를 적용하기위해서는 가장 상세한 경로를 먼저 사용해야 한다. 예를 들어, 다음 설정은 의도한대로 동작한다:
Alias /foo/bar /baz
Alias /foo /gaq
그러나 위의 두 지시어 순서를 바꾸면 /foo/bar
Alias
이전에
/foo
Alias
를
적용하므로 항상 두번째 지시어를 무시한다.
Alias 지시어
설명: | URL을 특정 파일시스템 장소로 대응한다 |
---|---|
문법: | Alias URL-path
file-path|directory-path |
사용장소: | 주서버설정, 가상호스트 |
상태: | Base |
모듈: | mod_alias |
Alias
지시어를 사용하면 파일시스템에서
DocumentRoot
밖에 있는
문서도 서비스할 수 있다. url-path로 시작하는
(%로 인코딩된) URL을 directory-path로 시작하는
파일에 대응한다.
예제:
Alias /image /ftp/pub/image
http://myserver/image/foo.gif를 요청하면 서버는 /ftp/pub/image/foo.gif 파일을 넘겨준다.
url-path 끝에 /를 포함하면, URL 끝에 /를
사용해야만 영향이 있음을 주의하라. 즉, Alias /icons/
/usr/local/apache/icons/
설정은 url /icons
와
관계가 없다.
대응의 대상을 포함하는 여러 <Directory>
섹션이
필요할지도 모른다. 이 지시어는 <Directory>
섹션을 검사하기 전에
처리하므로, 대응의 대상만 섹션의 영향을 받는다. (그러나
<Location>
섹션은 이 지시어를 처리하기 전에 한번만 검사하므로 지정한
URL 이하 전체에 영향을 준다.)
특히 DocumentRoot
밖에 있는 디렉토리로 Alias
를 만들었다면, 직접
대상 디렉토리의 접근을 허용해줘야 한다.
예제:
Alias /image /ftp/pub/image
<Directory /ftp/pub/image>
Order allow,deny
Allow from all
</Directory>
AliasMatch 지시어
설명: | 정규표현식을 사용하여 URL을 파일시스템 장소로 대응한다 |
---|---|
문법: | AliasMatch regex
file-path|directory-path |
사용장소: | 주서버설정, 가상호스트 |
상태: | Base |
모듈: | mod_alias |
이 지시어는 Alias
와
같지만, 간단히 URL의 앞부분만 비교하는 대신 표준 정규표현식을
사용한다. 지정한 정규표현식을 URL 경로와 비교하여 맞다면,
서버는 괄호로 묶은 부분을 대체하여 파일명으로 사용한다.
예를 들어, 다음과 같이 /icons
디렉토리를 사용할
수 있다:
AliasMatch ^/icons(.*) /usr/local/apache/icons$1
Redirect 지시어
설명: | 클라이언트가 다른 URL에 접속하도록 요청하는 외부 리다이렉션을 보낸다 |
---|---|
문법: | Redirect [status] URL-path
URL |
사용장소: | 주서버설정, 가상호스트, directory, .htaccess |
Override 옵션: | FileInfo |
상태: | Base |
모듈: | mod_alias |
Redirect 지시어는 이전 URL을 새로운 URL로 대응한다. 클라이언트에게 새로운 URL을 보내고, 클라이언트는 새로운 주소로 다시 한번 접속한다. (%로 인코딩된) URL-path로 시작하는 요청을 받으면 (%로 인코딩된) URL로 시작하는 새로운 URL로 리다이렉션 오류를 보낸다.
예제:
Redirect /service http://foo2.bar.com/service
클라이언트가 http://myserver/service/foo.txt를 요청하면 대신 http://foo2.bar.com/service/foo.txt에 접근하라는 응답을 받는다.
주의
Redirect 지시어는 설정파일에서
나오는 순서와 관계없이 Alias와 ScriptAlias 지시어보다 우선순위가
높다. 또, .htaccess 파일이나 <Directory>
섹션에서 사용하더라도
URL-path에는 상대경로가 아니라 반드시 완전한 URL을
사용해야 한다.
status 아규먼트를 지정하지않으면, "임시 (temporary)" (HTTP 상태 302) 리다이렉션을 보낸다. 즉, 클라이언트에게 자원을 임시로 옮겼다고 알린다. status 아규먼트를 사용하여 다른 HTTP 상태코드를 반환할 수 있다:
- permanent
- 자원을 완전히 옮겼음을 뜻하는 영구 리다이렉션 상태를 (301) 반환한다.
- temp
- 임시 리다이렉션 상태를 (302) 반환한다. 기본값이다.
- seeother
- 자원이 교체되었음을 뜻하는 "참조 (See Other)" 상태를 (303) 반환한다.
- gone
- 자원이 영구히 삭제되었음을 뜻하는 "소멸 (Gone)" 상태를 (410) 반환한다. 이 상태를 사용하면 URL 아규먼트를 사용할 수 없다.
status에 숫자 상태코드를 사용하여 다른 상태코드도
반환할 수 있다. 상태가 300과 399 사이라면 URL
아규먼트를 사용해야 하고, 아니라면 생략해야 한다. 단, 아파치
코드에 상태가 정의되있어야 한다 (http_protocol.c의
send_error_response
함수 참고).
예제:
Redirect permanent /one http://example.com/two
Redirect 303 /three http://example.com/other
RedirectMatch 지시어
설명: | 현재 URL이 정규표현식에 해당하면 외부 리다이렉션을 보낸다 |
---|---|
문법: | RedirectMatch [status] regex
URL |
사용장소: | 주서버설정, 가상호스트, directory, .htaccess |
Override 옵션: | FileInfo |
상태: | Base |
모듈: | mod_alias |
이 지시어는 Redirect
와 같지만, 간단히
URL의 앞부분만 비교하는 대신 표준 정규표현식을 사용한다.
지정한 정규표현식을 URL 경로와 비교하여 맞다면, 서버는 괄호로
묶은 부분을 대체하여 파일명으로 사용한다. 예를 들어, 다음은
모든 GIF 파일 요청에 대해 다른 서버의 비슷한 이름을 가진
JPEG 파일로 리다이렉션을 보낸다:
RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
RedirectPermanent 지시어
설명: | 클라이언트가 다른 URL에 접속하도록 요청하는 외부 영구 리다이렉션을 보낸다 |
---|---|
문법: | RedirectPermanent URL-path URL |
사용장소: | 주서버설정, 가상호스트, directory, .htaccess |
Override 옵션: | FileInfo |
상태: | Base |
모듈: | mod_alias |
이 지시어는 클라이언트에게 리다이렉션이 영구적임을 (상태
301) 알린다. Redirect permanent
와 정확히 같다.
RedirectTemp 지시어
설명: | 클라이언트가 다른 URL에 접속하도록 요청하는 외부 임시 리다이렉션을 보낸다 |
---|---|
문법: | RedirectTemp URL-path URL |
사용장소: | 주서버설정, 가상호스트, directory, .htaccess |
Override 옵션: | FileInfo |
상태: | Base |
모듈: | mod_alias |
이 지시어는 클라이언트에게 리다이렉션이 임시적임을 (상태
302) 알린다. Redirect temp
와 정확히 같다.
ScriptAlias 지시어
설명: | URL을 특정 파일시스템 장소로 대응하고 대상이 CGI 스크립트라고 알린다 |
---|---|
문법: | ScriptAlias URL-path
file-path|directory-path |
사용장소: | 주서버설정, 가상호스트 |
상태: | Base |
모듈: | mod_alias |
ScriptAlias
지시어는 Alias
지시어와 비슷하지만,
추가로 대상 디렉토리에 mod_cgi
의 cgi-script
핸들러가 처리할 CGI 스크립트가 있다고 알린다.
URL-path로 시작하는 (%로 인코딩된) URL을 파일시스템의
절대경로인 두번째 아규먼트로 시작하는 스크립트에 대응한다.
예제:
ScriptAlias /cgi-bin/ /web/cgi-bin/
http://myserver/cgi-bin/foo
를 요청하면 서버는
/web/cgi-bin/foo
스크립트를 실행한다.
ScriptAliasMatch 지시어
설명: | 정규표현식을 사용하여 URL을 특정 파일시스템 장소로 대응하고 대상이 CGI 스크립트라고 알린다 |
---|---|
문법: | ScriptAliasMatch regex
file-path|directory-path |
사용장소: | 주서버설정, 가상호스트 |
상태: | Base |
모듈: | mod_alias |
이 지시어는 ScriptAlias
와 같지만, 간단히
URL의 앞부분만 비교하는 대신 표준 정규표현식을 사용한다.
지정한 정규표현식을 URL 경로와 비교하여 맞다면, 서버는 괄호로
묶은 부분을 대체하여 파일명으로 사용한다. 예를 들어, 다음과
같이 표준적인 /cgi-bin
을 사용할 수 있다:
ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1