Blame docs/manual/howto/ssi.html.ko.euc-kr

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
Packit 90a5c9
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>아파치 투토리얼: Server Side Includes 소개 - Apache HTTP Server Version 2.4</title>
Packit 90a5c9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
Packit 90a5c9
<script src="../style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

모듈 | 지시어들 | FAQ | 용어 | 사이트맵

Packit 90a5c9

Apache HTTP Server Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP Server > Documentation > Version 2.4 > How-To / Tutorials

아파치 투토리얼: Server Side Includes 소개

Packit 90a5c9
Packit 90a5c9

가능한 언어:  en  |

Packit 90a5c9
 es  |
Packit 90a5c9
 fr  |
Packit 90a5c9
 ja  |
Packit 90a5c9
 ko 

Packit 90a5c9
Packit 90a5c9
이 문서는 최신판 번역이 아닙니다.
Packit 90a5c9
            최근에 변경된 내용은 영어 문서를 참고하세요.
Packit 90a5c9
Packit 90a5c9

Server-side includes를 사용하여 HTML 문서에 동적인 내용을

Packit 90a5c9
추가할 수 있다.

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
  • SSI가 무엇인가?
  • Packit 90a5c9
  • SSI가 가능하도록 서버 설정하기
  • Packit 90a5c9
  • 기본 SSI 지시어
  • Packit 90a5c9
  • 추가 예제
  • Packit 90a5c9
  • 이외에 설정할 수 있는 것은?
  • Packit 90a5c9
  • 명령어 실행하기
  • Packit 90a5c9
  • 고급 SSI 기법
  • Packit 90a5c9
  • 결론
  • Packit 90a5c9

    참고

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    소개

    Packit 90a5c9
     
    Packit 90a5c9
    Packit 90a5c9
        

    이 글은 보통 SSI라고 부르는 Server Side Includes를 설명한다.

    Packit 90a5c9
        SSI가 가능하도록 서버를 설정하는 방법과 HTML 페이지에 동적인
    Packit 90a5c9
        내용을 추가하는 기본적인 SSI 사용법을 소개한다.

    Packit 90a5c9
    Packit 90a5c9
        

    이 글의 뒷부분은 SSI 지시어 조건문과 같은 고급기법을

    Packit 90a5c9
        설명한다.

    Packit 90a5c9
    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    SSI가 무엇인가?

    Packit 90a5c9
    Packit 90a5c9
        

    SSI (Server Side Includes)는 HTML 페이지에 사용하는 지시어로,

    Packit 90a5c9
        페이지를 서비스할때 서버가 처리한다. SSI를 사용하면 CGI
    Packit 90a5c9
        프로그램이나 다른 동적인 기술로 페이지 전체를 만들어서
    Packit 90a5c9
        서비스하지 않고도 HTML 페이지에 동적으로 생성한 내용을 추가할
    Packit 90a5c9
        수 있다.

    Packit 90a5c9
    Packit 90a5c9
        

    SSI를 사용할지 아니면 프로그램으로 페이지 전체를 생성할지

    Packit 90a5c9
        결정은 페이지에서 정적인 부분이 많은지와 페이지를 서비스할
    Packit 90a5c9
        때마다 어느정도를 다시 계산해야할지에 달렸다. SSI는 현재
    Packit 90a5c9
        시간과 같이 적은 정보를 추가하는데 좋다. 그러나 페이지를
    Packit 90a5c9
        서비스할때 페이지의 대부분을 생성해야 한다면 다른 방법을
    Packit 90a5c9
        찾아봐야 한다.

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    SSI가 가능하도록 서버 설정하기

    Packit 90a5c9
    Packit 90a5c9
    Packit 90a5c9
        

    서버가 SSI를 처리하려면 httpd.conf 파일이나

    Packit 90a5c9
        .htaccess 파일에서 다음 지시어를 사용해야 한다.

    Packit 90a5c9

    Packit 90a5c9
            Options +Includes
    Packit 90a5c9

    Packit 90a5c9
    Packit 90a5c9
        

    그러면 아파치는 파일에서 SSI 지시어를 처리한다. 설정에는

    Packit 90a5c9
        보통 여러 Options 지시어가
    Packit 90a5c9
        있고, 이 지시어들은 서로 덮어써서 무효로 만들다. 그래서
    Packit 90a5c9
        지시어를 맨마지막에 처리하기위해 보통 SSI를 원하는 특정
    Packit 90a5c9
        디렉토리에서 Options를 사용한다.

    Packit 90a5c9
    Packit 90a5c9
        

    모든 파일에서 SSI 지시어를 처리하는 것은 아니다. 아파치에게

    Packit 90a5c9
        어떤 파일을 처리할지 알려줘야 한다. 두가지 방법이 있다.
    Packit 90a5c9
        하나는 다음과 같은 지시어로 .shtml과 같은 특정
    Packit 90a5c9
        파일 확장자를 가진 파일을 처리하는 방법이다.

    Packit 90a5c9

    Packit 90a5c9
            AddType text/html .shtml
    Packit 90a5c9
            AddOutputFilter INCLUDES .shtml
    Packit 90a5c9

    Packit 90a5c9
    Packit 90a5c9
        

    이 방법의 단점은 이미 있는 페이지에 SSI 지시어를 추가하는

    Packit 90a5c9
        경우 SSI 지시어를 처리하기위해 .shtml 확장자를
    Packit 90a5c9
        부여하기때문에 파일명과 이 페이지의 모든 링크를 변경해야
    Packit 90a5c9
        하는 점이다.

    Packit 90a5c9
    Packit 90a5c9
        

    다른 방법은 XBitHack

    Packit 90a5c9
        지시어를 사용하는 방법이다.

    Packit 90a5c9

    Packit 90a5c9
            XBitHack on
    Packit 90a5c9

    Packit 90a5c9
    Packit 90a5c9
        

    XBitHack

    Packit 90a5c9
        실행권한이 있는 파일에서 SSI 지시어를 처리한다. 그래서 이미
    Packit 90a5c9
        있는 페이지에 SSI 지시어를 추가한다면 파일명을 변경하지
    Packit 90a5c9
        않고 chmod로 파일에 실행권한을 주면 된다.

    Packit 90a5c9

    Packit 90a5c9
            chmod +x pagename.html
    Packit 90a5c9

    Packit 90a5c9
    Packit 90a5c9
        

    하지 말아야 할 것 하나. 가끔 .shtml 파일명에

    Packit 90a5c9
        골치를 앓지말고 모든 .html 파일을 SSI 처리하라고
    Packit 90a5c9
        충고하는 사람이 있다. 이 사람들은 아마도 XBitHack에 대해 모르는
    Packit 90a5c9
        것 같다. 명심할 점은 이렇게 하면 아파치는 파일에 SSI 지시어가
    Packit 90a5c9
        없더라도 클라이언트로 보내는 모든 파일을 살펴봐야 한다는
    Packit 90a5c9
        것이다. 성능이 매우 느려질 수 있으며, 좋은 생각이 아니다.

    Packit 90a5c9
    Packit 90a5c9
        

    물론 윈도우즈에서는 실행권한이란 것이 없기때문에 후자를

    Packit 90a5c9
        사용할 수 없다.

    Packit 90a5c9
    Packit 90a5c9
        

    내용이 동적이여서 계산하기 어렵기때문에 아파치 기본 설정은

    Packit 90a5c9
        SSI 페이지의 최근수정일과 content length HTTP 헤더를 보내지
    Packit 90a5c9
        않는다. 그래서 문서를 캐쉬하지 못하고 클라이언트가 느끼는
    Packit 90a5c9
        성능이 떨어진다. 두가지 해결방법이 있다.

    Packit 90a5c9
    Packit 90a5c9
        
      Packit 90a5c9
            
    1. XBitHack Full 설정은 사용한다. 그러면
    2. Packit 90a5c9
            아파치는 포함하는(include) 파일들의 수정일은 무시한체
      Packit 90a5c9
            원래 요청한 파일의 날짜만 보고 최근수정일을 알아낸다.
      Packit 90a5c9
      Packit 90a5c9
            
    3. mod_expires에 있는 지시어를 사용하여
    4. Packit 90a5c9
            파일에 직접 만기일을 설정하면 브라우저와 프록시가 문서를
      Packit 90a5c9
            캐쉬할 수 있다.
      Packit 90a5c9
          
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      기본 SSI 지시어

      Packit 90a5c9
      Packit 90a5c9
          

      SSI 지시어의 사용법은 다음과 같다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#element attribute=value attribute=value ... -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      HTML 주석같이 생겼기때문에 SSI 기능을 가동하지 않아도

      Packit 90a5c9
          HTML 소스에는 나오지만 브라우저는 무시한다. SSI를 올바로
      Packit 90a5c9
          설정하면 지시어를 결과값으로 바꾼다.

      Packit 90a5c9
      Packit 90a5c9
          

      element는 다음중 하나다. 다음 회에 더 자세히 설명할 것이다.

      Packit 90a5c9
          지금은 SSI로 할 수 있는 몇가지 예를 보인다

      Packit 90a5c9
      Packit 90a5c9

      오늘 날짜

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
              <!--#echo var="DATE_LOCAL" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      echo element는 변수값을 그대로 출력한다.

      Packit 90a5c9
          CGI 프로그램에 제공하는 환경변수들 외에도 여러 표준 변수가
      Packit 90a5c9
          있다. 또, set element를 사용하여 직접 변수를
      Packit 90a5c9
          정의할 수도 있다.

      Packit 90a5c9
      Packit 90a5c9
          

      날짜 출력 형식이 마음에 들지 않는다면, 다음과 같이

      Packit 90a5c9
          config element의 timefmt attribute를
      Packit 90a5c9
          사용한다.

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
              <!--#config timefmt="%A %B %d, %Y" -->
      Packit 90a5c9
              Today is <!--#echo var="DATE_LOCAL" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      파일의 수정일

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
              이 문서는 <!--#flastmod file="index.html" -->에 마지막으로 수정되었다
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      이 element도 timefmt 형식 설정에 달렸다.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      CGI 프로그램 결과를 포함하기

      Packit 90a5c9
      Packit 90a5c9
          

      일반적인 SSI 사용법중 하나로, 많이들 애용하는 ``방문수

      Packit 90a5c9
          카운터'' 같은 CGI 프로그램 결과를 출력한다.

      Packit 90a5c9
      Packit 90a5c9

      Packit 90a5c9
              <!--#include virtual="/cgi-bin/counter.pl" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      추가 예제

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      다음은 HTML 문서에 사용할 수 있는 몇가지 SSI 예제다.

      Packit 90a5c9
      Packit 90a5c9

      이 문서가 언제 마지막으로

      Packit 90a5c9
      수정되었나?
      Packit 90a5c9
      Packit 90a5c9
          

      앞에서 SSI를 사용하여 사용자에게 문서의 최근수정일을

      Packit 90a5c9
          알릴 수 있다고 말했다. 그러나 실제 방법은 알려주지 않았다.
      Packit 90a5c9
          다음 코드를 HTML 문서에 사용하면 페이지에 시간 기록을 남긴다.
      Packit 90a5c9
          물론 위에서 설명한대로 SSI가 올바로 작동해야 한다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#config timefmt="%A %B %d, %Y" -->
      Packit 90a5c9
              이 문서는 <!--#flastmod file="ssi.shtml" -->에 마지막으로 수정되었다;
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      물론 ssi.shtml대신 원하는 실제 파일명을

      Packit 90a5c9
          사용한다. 아무 페이지에라도 붙여넣을 수 있는 범용코드를
      Packit 90a5c9
          원한다면, 파일명 대신 LAST_MODIFIED 변수를
      Packit 90a5c9
          사용한다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#config timefmt="%D" -->
      Packit 90a5c9
              This file last modified <!--#echo var="LAST_MODIFIED" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      timefmt 형식에 대한 자세한 정보는 검색엔진에서

      Packit 90a5c9
          strftime을 찾아봐라. 문법은 같다.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      표준 페이지 하단을 포함하기

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      여러 페이지가 있는 사이트를 관리한다면 페이지 전체를

      Packit 90a5c9
          수정하는 것은, 특히 페이지들이 표준 외관을 가지도록 수정하는
      Packit 90a5c9
          것은 정말로 괴롭다.

      Packit 90a5c9
      Packit 90a5c9
          

      페이지 상단(header)과 하단(footer)을 파일로 포함하여

      Packit 90a5c9
          이런 수정의 부담을 덜 수 있다. 모든 페이지에서
      Packit 90a5c9
          include SSI 명령어를 사용하여 페이지 하단 파일
      Packit 90a5c9
          하나를 포함하면 된다. include element의
      Packit 90a5c9
          file attribute나 virtual attribute로
      Packit 90a5c9
          포함할 파일을 지정한다. file attribute는 현재
      Packit 90a5c9
          디렉토리에 상대적인 파일경로다. 즉, (/로 시작하는)
      Packit 90a5c9
          절대파일경로나 경로 안에 ../를 사용할 수 없다. 아마도 서비스하는
      Packit 90a5c9
          문서의 상대 URL을 지정할 수 있는 virtual attribute가
      Packit 90a5c9
          더 유용할 것이다. 경로를 /로 시작할 수 있지만, 포함하려는
      Packit 90a5c9
          파일이 서비스하는 파일과 같은 서버에 있어야 한다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#include virtual="/footer.html" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      나는 보통 이 두가지를 합쳐서 포함할 페이지 하단 파일에

      Packit 90a5c9
          LAST_MODIFIED 지시어를 넣는다. 포함하려는 파일에도
      Packit 90a5c9
          SSI 지시어가 나올 수 있으며, 이렇게 포함한 파일이 다른 파일을
      Packit 90a5c9
          포함하는 식으로 여러번 계속 포함할 수도 있다.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      이외에 설정할 수 있는 것은?

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      시간 형식 config(설정) 외에 두가지를 더

      Packit 90a5c9
          config(설정)할 수 있다.

      Packit 90a5c9
      Packit 90a5c9
          

      보통 SSI 지시어가 잘못되면 다음과 같은 문구가 나온다

      Packit 90a5c9

      Packit 90a5c9
              [an error occurred while processing this directive]
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      이 문구를 변경하고 싶다면 config element의

      Packit 90a5c9
          errmsg attribute를 사용하여 변경한다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#config errmsg="[It appears that you don't know how to use SSI]" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      사이트를 서비스하기 전에 모든 SSI 지시어 문제를 해결하여

      Packit 90a5c9
          사용자가 이런 문구를 보지 않길 바란다. (그렇지?)

      Packit 90a5c9
      Packit 90a5c9
          

      그리고 sizefmt attribute가 반환하는 파일크기

      Packit 90a5c9
          형식을 config(설정)할 수 있다. 바이트로 크기를
      Packit 90a5c9
          보여주려면 bytes, 적절히 Kb나 Mb로 크기를
      Packit 90a5c9
          보여주려면 abbrev를 사용한다.

      Packit 90a5c9
          
      top
      Packit 90a5c9
      Packit 90a5c9

      명령어 실행하기

      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      나는 다음 달에 작은 CGI 프로그램과 SSI를 같이 사용하는

      Packit 90a5c9
          글을 쓸 예정이다. 지금은 exec element로 할
      Packit 90a5c9
          수 있는 다른 것들을 설명할 것이다. SSI는 실제 쉘을 (정확히는
      Packit 90a5c9
          /bin/sh나 Win32를 사용한다면 DOS 쉘) 사용하여
      Packit 90a5c9
          명령어를 실행한다. 예를 들어, 다음은 디렉토리 목록을 보여준다.

      Packit 90a5c9

      Packit 90a5c9
              <pre>
      Packit 90a5c9
              <!--#exec cmd="ls" -->
      Packit 90a5c9
              </pre>
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      or, on Windows

      Packit 90a5c9

      Packit 90a5c9
              <pre>
      Packit 90a5c9
              <!--#exec cmd="dir" -->
      Packit 90a5c9
              </pre>
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      dir 출력에 브라우저가 혼동할

      Packit 90a5c9
          ``<dir>'' 문자열이 포함되있기때문에,
      Packit 90a5c9
          윈도우즈에서 이 지시어를 사용하면 결과가 조금 이상할 것이다.

      Packit 90a5c9
      Packit 90a5c9
          

      이 기능은 exec 태그에 사용한 어떤 명령어라도

      Packit 90a5c9
          실행할 수 있기때문에 매우 위험하다. ``방명록''과 같이 사용자가
      Packit 90a5c9
          웹페이지 내용을 수정할 수 있는 환경이라면, 이 기능을 절대로
      Packit 90a5c9
          사용해선 안된다. Options 지시어에
      Packit 90a5c9
          IncludesNOEXEC 아규먼트를 사용하여 SSI를 허용하지만
      Packit 90a5c9
          exec 기능을 막을 수 있다.

      Packit 90a5c9
          
      top
      Packit 90a5c9
      Packit 90a5c9

      고급 SSI 기법

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      내용을 출력하는 기능 외에 아파치 SSI는 변수 설정이 가능하고,

      Packit 90a5c9
          비교문과 조건문에 이 변수를 사용할 수 있다.

      Packit 90a5c9
      Packit 90a5c9

      경고

      Packit 90a5c9
      Packit 90a5c9
          

      이 글에서 설명하는 대부분의 기능은 아파치 1.2 이후부터

      Packit 90a5c9
          사용할 수 있다. 물론, 아파치 1.2 이상을 사용하지 않는다면
      Packit 90a5c9
          아마도 빨리 업그레이드해야 한다. 해라. 지금 해라. 기다릴
      Packit 90a5c9
          것이다.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      변수 설정

      Packit 90a5c9
      Packit 90a5c9
          

      set 지시어를 사용하여 나중에 사용할 변수를

      Packit 90a5c9
          설정할 수 있다. 앞으로 변수가 필요하기때문에 먼저 설명한다.
      Packit 90a5c9
          문법은 다음과 같다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#set var="name" value="Rich" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      다음과 같이 값을 문자그대로 설정하지 않고 환경변수나 위에서 설명한 변수(예를

      Packit 90a5c9
          들어, LAST_MODIFIED)와 같이 다른 변수를 사용하여
      Packit 90a5c9
          변수값을 설정할 수도 있다. 이때 변수명 앞에 달러 표시($)를
      Packit 90a5c9
          붙여서 문자열이 아닌 변수임을 표시한다.

      Packit 90a5c9
      Packit 90a5c9
          

      <!--#set var="modified" value="$LAST_MODIFIED" -->

      Packit 90a5c9
          

      Packit 90a5c9
      Packit 90a5c9
          

      변수값에 달러 문자를 그대로 입력하려면 달러 표시 앞에

      Packit 90a5c9
          백슬래쉬를 사용한다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#set var="cost" value="\$100" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      마지막으로 긴 문자열 중간에 변수를 사용하는데 뒤에 있는

      Packit 90a5c9
          문자도 변수명으로 오인하여 혼동되는 경우, 변수명을 대괄호로
      Packit 90a5c9
          묶어서 확실히 한다. (좋은 예를 찾기 힘들지만, 무슨 말인지
      Packit 90a5c9
          이해하길 바란다.)

      Packit 90a5c9

      Packit 90a5c9
              <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      조건 표현식

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9
          

      변수를 설정하고 비교할 수 있으니 조건문이 가능하다. 이제

      Packit 90a5c9
          SSI가 일종의 간단한 프로그래밍언어가 된다.
      Packit 90a5c9
          mod_include는 조건문을 만드는 if,
      Packit 90a5c9
          elif, else, endif
      Packit 90a5c9
          구조를 제공한다. 실제 한 페이지로 여러 논리적인 페이지를
      Packit 90a5c9
          만들 수 있다.

      Packit 90a5c9
      Packit 90a5c9
          

      조건문 구조는 다음과 같다.

      Packit 90a5c9

      Packit 90a5c9
          <!--#if expr="test_condition" -->
      Packit 90a5c9
          <!--#elif expr="test_condition" -->
      Packit 90a5c9
          <!--#else -->
      Packit 90a5c9
          <!--#endif -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      test_condition에는 어떤 논리비교라도 사용할

      Packit 90a5c9
          수 있다. 값을 다른 값과 비교하거나, 특정 값이 ``참''인지
      Packit 90a5c9
          검사한다. (문자열이 비어있지 않으면 참이다.) 사용가능한
      Packit 90a5c9
          비교 연산자를 모두 보려면, mod_include
      Packit 90a5c9
          문서를 참고하라. 다음은 조건문을 사용한 몇가지 예제다.

      Packit 90a5c9
      Packit 90a5c9
          

      설정파일에 다음 줄을 추가한다.

      Packit 90a5c9

      Packit 90a5c9
              BrowserMatchNoCase macintosh Mac
      Packit 90a5c9
              BrowserMatchNoCase MSIE InternetExplorer
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      클라이언트가 맥킨토시에서 실행하는 Internet Explorer라면

      Packit 90a5c9
          환경변수 ``Mac''과 ``InternetExplorer'' 모두 참으로 설정한다.

      Packit 90a5c9
      Packit 90a5c9
          

      그리고 SSI 문서에 다음과 같이 적는다.

      Packit 90a5c9

      Packit 90a5c9
              <!--#if expr="${Mac} && ${InternetExplorer}" -->
      Packit 90a5c9
              여기에 사과문가 나온다
      Packit 90a5c9
              <!--#else -->
      Packit 90a5c9
              여기에 멋진 JavaScript 코드가 나온다
      Packit 90a5c9
              <!--#endif -->
      Packit 90a5c9

      Packit 90a5c9
      Packit 90a5c9
          

      내가 매킨토시 IE에 반감이 있는 것은 아니다. 나는 단지

      Packit 90a5c9
          저번주에 다른 곳에서는 문제가 없는 JavaScript 코드가 매킨토시
      Packit 90a5c9
          IE에서는 동작하지 않아서 몇시간을 고생했다. 위는 임시
      Packit 90a5c9
          해결책이다.

      Packit 90a5c9
      Packit 90a5c9
          

      (직접 정의하였건 일반 환경변수이건) 어떤 변수라도 조건문에

      Packit 90a5c9
          사용할 수 있다. 아라치는 SetEnvIf나 다른 관련
      Packit 90a5c9
          지시어로 환경변수를 설정할 수 있기때문에 CGI 없이도 멋지게
      Packit 90a5c9
          동적인 내용을 만들 수 있다.

      Packit 90a5c9
      Packit 90a5c9
      top
      Packit 90a5c9
      Packit 90a5c9

      결론

      Packit 90a5c9
      Packit 90a5c9
          

      SSI는 확실히 CGI나 동적인 웹페이지를 생성하는 다른 기술을

      Packit 90a5c9
          대체할 수 없다. 그러나 많은 추가 작업없이 페이지에 동적인
      Packit 90a5c9
          내용을 조금 추가하기에는 훌륭한 방법이다.

      Packit 90a5c9
      Packit 90a5c9
      Packit 90a5c9

      가능한 언어:  en  |

      Packit 90a5c9
       es  |
      Packit 90a5c9
       fr  |
      Packit 90a5c9
       ja  |
      Packit 90a5c9
       ko 

      Packit 90a5c9
      top

      Comments

      Notice:
      This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
      Packit 90a5c9
      <script type="text/javascript">
      Packit 90a5c9
      var comments_shortname = 'httpd';
      Packit 90a5c9
      var comments_identifier = 'http://httpd.apache.org/docs/2.4/howto/ssi.html';
      Packit 90a5c9
      (function(w, d) {
      Packit 90a5c9
          if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
      Packit 90a5c9
              d.write('
      <\/div>');
      Packit 90a5c9
              var s = d.createElement('script');
      Packit 90a5c9
              s.type = 'text/javascript';
      Packit 90a5c9
              s.async = true;
      Packit 90a5c9
              s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
      Packit 90a5c9
              (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
      Packit 90a5c9
          }
      Packit 90a5c9
          else { 
      Packit 90a5c9
              d.write('
      Comments are disabled for this page at the moment.<\/div>');
      Packit 90a5c9
          }
      Packit 90a5c9
      })(window, document);
      Packit 90a5c9
      //--></script>
      Packit 90a5c9

      Copyright 2018 The Apache Software Foundation.
      Licensed under the Apache License, Version 2.0.

      Packit 90a5c9

      모듈 | 지시어들 | FAQ | 용어 | 사이트맵

      <script type="text/javascript">
      Packit 90a5c9
      if (typeof(prettyPrint) !== 'undefined') {
      Packit 90a5c9
          prettyPrint();
      Packit 90a5c9
      }
      Packit 90a5c9
      //--></script>
      Packit 90a5c9
      </body></html>