서버측 내용

Server Side Includes

SSI(Server Side Includes)는 World Wide Web 전용으로 사용되는 간단한 서버 측 스크립트 언어입니다.1개 이상의 파일 내용을 웹 서버상의 웹 페이지(아래 참조)에 포함할 때 가장 유용합니다.#include지시.이것은 일반적으로 페이지 머리글, 페이지 바닥글 및 탐색 메뉴와 같은 사이트 전체에서 공통적인 코드 조각일 수 있습니다.SSI에는 조건부 기능에 대한 제어 지시와 외부 프로그램에 대한 호출 지시도 포함되어 있습니다.Apache, LiteSpeed, nginx, IIS 및 W3C의 직쏘에 [1]의해 지원됩니다.NCSA HTTPd[2]루트가 있습니다.

웹 서버가 SSI 대응HTML 파일을 인식해, 이러한 순서를 실행하려면 , 디폴트에서는 파일명은 특별한 확장자로 끝나 있을 필요가 있습니다..shtml,.stm,.shtm또는 서버가 이를 허용하도록 설정되어 있는 경우 파일의 [3]실행 비트를 설정합니다.

설계.

단순한 프로그래밍 언어로서 SSI는 텍스트라는 한 가지 유형만 지원합니다.제어 플로우는 비교적 단순하고 선택지가 지원되지만 루프는 네이티브로 지원되지 않으며 include 또는 HTTP [a]redirect를 사용한 재귀로만 실행할 수 있습니다.언어의 설계가 심플하기 때문에 대부분의 서버측 스크립트 언어보다 학습과 사용이 용이합니다.또한 복잡한 서버측 처리는 기능이 풍부한 프로그래밍 언어 중 하나를 사용하여 이루어지는 경우가 많습니다.SSI는 튜링 [4]완료입니다.

SSI에는 간단한 구문이 있습니다.<!--#directive parameter=value parameter=value -->디렉티브는 HTML 코멘트에 배치되어 있기 때문에 SSI가 활성화되지 않은 경우 사용자가 SSI 디렉티브를 참조하지 않는 한 페이지에 표시되지 않습니다.구문에서는 선두의 "<"와 지시문 사이에 공백은 사용할 수 없습니다.SSI에 대한 Apache 튜토리얼에서는 요소를 [5]닫는 "-->" 앞에 공백 문자가 있어야 합니다.

일별 견적을 포함하는 웹 페이지에는 웹 페이지 파일에 다음 코드를 삽입하여 견적을 포함할 수 있습니다.

<!--#virtual="../syslog.txt" --> 

한 번의 변경으로quote.txt파일을 포함한 모든 페이지에 최신 일별 견적이 표시됩니다.포함은 파일로 제한되지 않으며 프로그램에서 출력되는 텍스트 또는 현재 시간과 같은 시스템 변수의 값일 수도 있습니다.

지시 사항

흔한

다음은 NCSA HTTPd(1990년대)[2] 시대의 SSI 지시입니다.일부 구현에서는 모든 [6]구현이 지원되지 않습니다.

NCSA HTTPd SSI 명령어
지시. 파라미터 묘사
include 파일 또는 가상 이것은 아마도 가장 많이 사용되는 SSI 지시문일 것입니다.그러면 한 문서의 내용을 다른 문서로 변환할 수 있습니다.포함된 문서 자체는 다른 SSI 사용 가능 파일일 수 있습니다.file또는virtual파라미터는 포함할 파일(HTML 페이지, 텍스트 파일, 스크립트 등)을 지정합니다.NCSA HTTPd는 경유로 CGI를 지원하지 않습니다.include하지만 나중에 Apache HTTPd가 됩니다.[2][7]프로세스가 파일을 읽거나 스크립트를 실행할 수 없는 경우 include는 실패합니다.파라미터 "virtual"는 모든 디렉토리 경로를 URL의 일부처럼 처리합니다.file" 는 기본 파일 시스템과 같이 모든 디렉토리 경로를 처리합니다."를 사용하는 경우file절대 경로를 참조하는 것은 금지되어 있습니다.../부모 디렉토리에 액세스 합니다.Apache 문서에서는 "를 사용할 것을 권장합니다.virtual"보다 우선합니다."file"[7]
<!--#menu virtual="menu.cgi" --> <!--#menu.cgi" -->
exec cgi 또는 cmd 이 디렉티브는 서버에서 프로그램, 스크립트 또는 셸 명령을 실행합니다.cmd 파라미터는 서버측 명령어를 지정합니다.cgi 파라미터는 CGI 스크립트에 대한 경로를 지정합니다.현재 SSI 스크립트의 및 는 CGI 스크립트로 전달됩니다.따라서 "include virtual"[citation needed] 대신 "exec cgi"를 사용해야 합니다.
<!--#exec cgi="/cgi-bin/foo.cgi" --> <!--#exec cmd="ls -l" -->
echo 변화하다 디렉티브는 지정된HTTP 환경변수의 내용을 표시합니다.변수에는 , 및 [citation needed]가 있습니다.
IP 주소는 다음과 같습니다.<!--#syslog var="REMOTE_ADDR" -->
config timefmt, sizefmt 또는 errmsg 이 지시어는 날짜, 시간, 파일 크기 및 오류 메시지(SSI 명령이 실패했을 때 반환됨)의 표시 형식을 설정합니다.
<!--#config timefmt=%m %d" --> <!----------------------------------------------------------------------------------------------------------------SSI 명령어가 실패했습니다!" -->
flastmod그리고.fsize 파일 또는 가상 이러한 지시문은 지정된 문서가 마지막으로 수정된 날짜 또는 지정된 문서의 크기를 표시합니다.파일 또는 가상 매개변수는 사용할 문서를 지정합니다.파일 매개변수는 문서를 문서 경로에 상대적인 것으로 정의하고, 가상 매개변수는 문서를 문서 루트에 상대적인 것으로 정의합니다.
<!--#flastmod virtual="index.files" --> <!--#fsize file="script.pl" -->

제어 지시

제어 지시는 나중에 SSI에 추가됩니다.여기에는 유비쿼터스 if-elif-else-endif 흐름 제어 및 가변 쓰기 및 일부 구현에서만 볼 수 있는 루프와 같은 보다 이국적인 기능이 포함됩니다.

지시. 파라미터 묘사 발견 장소:
  • 한다면
  • 엘리프
  • 또 다른
  • 엔디프
expr if하나의 물리적 페이지에서 여러 논리 페이지를 결정하고 생성하는 조건 테스트에 사용됩니다. elifnested else-if의 약자입니다. else그리고.endif매개 변수를 허용하지 않습니다.

표현식 구문은 구현에 따라 다릅니다.변수 존재 및 등/정규 체크가 일반적으로 지원됩니다.대신 [1]직쏘는 여러 속성에 분할된 식을 사용합니다.

<!--#if expr="${Sec_Nav}" --> <!----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------txt" --> <!--#endif -->
유비쿼터스
세트 변수, 값 SSI 변수의 값을 설정합니다.Apache는 [8]인코딩을 위한 추가 매개 변수를 제공합니다.
<!--#set var="foo" value="bar" -->
Apache,[8] Nginx[9]
printenv 이 디렉티브는 환경변수 및 사용자 정의 변수를 포함한 모든 SSI 변수와 그 값의 목록을 출력합니다.속성이 없습니다.
<!--#printenv -->
아파치[8]

「 」를 참조해 주세요.

메모들

  1. ^ 그럼에도 불구하고 직쏘를 비롯한 일부 구현에서 찾을 수 있습니다.

레퍼런스

  1. ^ a b "SSI Commands". W3C. Retrieved 24 March 2019.
  2. ^ a b c "Server Side Includes (SSI)". NCSA HTTPd Tutorial. Archived from the original on 3 March 1997. Retrieved 24 March 2019.
  3. ^ "Configuring your server to permit SSI". Apache Tutorial: Introduction to Server Side Includes. The Apache Software Foundation. Retrieved 24 June 2015.
  4. ^ "Server Side Includes Turing machine, Jan Schejbal". Janschejbal.de. Retrieved 2012-12-06.
  5. ^ "Basic SSI Directives and Syntax". 2018-02-09. Retrieved 2018-02-09.
  6. ^ "Module ngx_http_ssi_module". nginx documentation. Retrieved 16 November 2021.
  7. ^ a b "Apache Module mod_include". Apache HTTP Server Version 2.4 Documentation. Apache Software Foundation. Retrieved 2021-09-07.
  8. ^ a b c "mod_include". Apache HTTP Server. Retrieved 25 March 2019.
  9. ^ "ngx_http_ssi_module". nginx.org. Retrieved 25 March 2019.

외부 링크