1. SSI 환경 설정
$ vi Apache_Home/conf/http.conf
DirectoryIndex index.html index.htm index.shtml index shtm # 디렉토리에서 우선적으로 찾는 파일
<Directory "/usr/local/apache/htdocs">
Options ExecCGI
Options Includes # 이것을 추가하고 아래 두파일을 편집한다
AllowOverride None
Order allow,deny
Allow from all
</Directory>
$ vi Apache_Home/conf/srm.conf
AddHandler server-parsed .shtml
AddType text/html shtml
$ vi Apache_Home/conf/access.conf
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
Options Includes # 이 옵션을 추가시켜야 SSI 명령어 사용이 가능하다
AllowOverride None # All 로 설정이 되어 있어야 .htaccess 파일 사용자도 사용이 가능하다.
order allow,deny
allow from all
</Directory>
# 참고로 exec 를 제외한 SSI 를 적용하고자 할때는 Options IncludesNoExec 를 추가해 주어야 한다.
# 많은 웹사이트는 보안상의 이유로 SSI를 지원하지 않거나, 지원하더라도 exec를 허용하지 않는 경우가 많다.
2. SSI 명령어 사용하기
SSI 문서를 사용하려면 HTML 문서안에 특별한 문자를 사용하여야 한다.
클라이언트가 HTTP 서버에 페이지 요청을 하면 서버에서는 홈페이지 문서에서 특별한 문자를 포함하고
있는지 검색한 다음 만약 이러한 특수문자가 발견되면 그에 맞는 기능들을 수행한다.
SSI 명령어 포맷방식은 다음과 같다.
<!--#command arg1="value1 arg2="value2 ... -->
<--# 시작의 정의 , SSI 명령어를 시작할때는 꼭 이 태그가 포함되어 있어야 한다.
command 에는 SSI 명령어가 사용될 수 있다.
--> 끝의 정의, SSI 명령어를 끝낼시는 꼭 이 태그가 포함되어 있어야 한다.
3. SSI 명령어들
echo DOCUMENT_NAME, DOCUMENT_URL, DATE_LOCAL, DATE_GMT, LAST_MODIFIED,
QUERY_STRING_UNESCAPED 등의 변수값 출력
include 다른 파일내용 포함시킴
exec cmd=,cgi= 중에서 하나를 실행시킴, 보안상의 문제로 권장 하지 않음
config 오류출력, 시간형식, 파일크기 형식등에 대한 환경 설정
flastmod 최종 파일 변경 시각 출력
printenv 모든 변수와 값 출력
set 변수의 값을 설정
fsize 파일의 크기 정보를 표시
4. SSI 명령어 조합
<!--#flastmod file="nextel.html" -->
위 예에서 사용된 flastmod 명령어는 수정시간을 출력하라는 뜻이다.
인수로는 'file'이 쓰였고 ,value 는 nextel.html 이 쓰였다.
흔히 명령어는 인수이름에 따라 다르게 실행되어 질 수가 있다. 다음 예를 보자.
<!--#flastmod virtual="/" -->
서버의 홈페이지 마지막 수정시간을 얻을수 있다.
SSI 명령어가 실행되어 질때, 'environment variables' 값이 설정이 된다.
이것은 CGI variables 을 포함하고 있고(REMOTE_HOST etc), DOCUMENT_NAME
그리고 LAST_MODIFIED 등을 가지고 있다.
<!--#echo var="LAST_MODIFIED" -->
echo 명령어로도 출력할수 있다.
5. Extended SSI (XSSI)
XSSI 는 SSI 변수들을 그대로 사용할 수 있다.
예를 들면 현재의 문서안에서 마지막 수정시간을 다음과 같은 명령어로 얻을 수도 있다.
<!--#flastmod file="$DOCUMENT_NAME"-->
또한 SET 명령어를 사용하여 SSI에서 설정된 변수들을 다시 설정할 수가 있다.
그리고 if,else, elif ,endif을 HTML 문서안에 포함시켜 사용할 수 있다.
6. SSI 와 XSSI 를 사용한 몇몇 예제를 소개하고자 한다.
·현재 문서의 파일이름을 표시
<!--#echo var="DOCUMENT_NAME" -->
·똑같은 HTML 문서를 출력하고자 할 때
다음 명령행을 각 문서의 아래에 더하기 바란다 :
<!--#includes file="nextel.html" -->
·외부사용자로부터 문서 감추기
XSSI 의 if 명령어와 REMOTE_ADDR CGI 변수를 이용해 특정문서를 외부 사용자로부터 감추고,
대신에 허가된 사용자에게만 문서를 보여준다.
<!--#if expr="$REMOTE_ADDR != /^203.236.232./" -->
<a href="internal-documents.html">Internal documents</a>