Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.2
サーãƒã‚µã‚¤ãƒ‰ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ã«ã‚ˆã£ã¦ã€æ—¢å˜ã® HTML ドã‚ュメントã«å‹•çš„ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
関連モジュール | 関連ディレクティブ |
---|---|
ã“ã®è¨˜äº‹ã¯ã€é€šå¸¸ã¯å˜ã« SSI ã¨å‘¼ã°ã‚Œã‚‹ Server Side Includes を扱ã„ã¾ã™ã€‚ã“ã®è¨˜äº‹ã«ãŠã„ã¦ã¯ã€ã‚µãƒ¼ãƒã§ã® SSI を許å¯ã™ã‚‹ãŸã‚ã®è¨å®šã¨ã€ ç¾åœ¨ã® HTML ページã«å‹•çš„ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’åŠ ãˆã‚‹ãŸã‚ã®ã„ãã¤ã‹ã®åŸºæœ¬çš„㪠SSI 技術を紹介ã—ã¾ã™ã€‚
記事ã®å¾ŒåŠã§ã¯ã€SSI ディレクティブ㧠SSI ã¨å…±ã«å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã‚‹æ¡ä»¶æ–‡ã®ã‚ˆã†ãª 幾分高度ãªäº‹æŸ„ã«ã¤ã„ã¦è¿°ã¹ã¦ã„ã¾ã™ã€‚
SSI (Server Side Includes) ã¯ã€HTML ページä¸ã«é…ç½®ã•れるディレクティブã§ã‚り〠サーãƒã§ãƒšãƒ¼ã‚¸ã‚’æä¾›ã™ã‚‹æ™‚ã«è©•価ã•れã¾ã™ã€‚SSI ã¯ã€CGI プãƒã‚°ãƒ©ãƒ ã‚„ãã®ä»–ã®å‹•çš„ãªæŠ€è¡“ã§å…¨ã¦ã®ãƒšãƒ¼ã‚¸ã‚’æä¾›ã›ãšã«ã€ å‹•çš„ã«ç”Ÿæˆã•れãŸã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’ç¾åœ¨ã® HTML ページã«åŠ ãˆã¾ã™ã€‚
ã©ã†ã„ã†å ´åˆã« SSI を使ã„ã€ã©ã†ã„ã†å ´åˆã«ãƒ—ãƒã‚°ãƒ©ãƒ 㧠ページを完全ã«ç”Ÿæˆã™ã‚‹ã‹ã¯ã€ãƒšãƒ¼ã‚¸ã®ã†ã¡ã©ã®ç¨‹åº¦ãŒé™çš„ã§ã‚ã‚Šã€ ãƒšãƒ¼ã‚¸ãŒæä¾›ã•れるãŸã³ã«å†è¨ˆç®—ã™ã‚‹å¿…è¦ãŒã©ã®ç¨‹åº¦ã‚ã‚‹ã‹ã§é€šå¸¸ã¯æ±ºå®šã—ã¾ã™ã€‚ SSI ã¯ç¾åœ¨æ™‚刻ã®ã‚ˆã†ãªå°ã•ã„æƒ…å ±ã‚’åŠ ãˆã‚‹ã«ã¯ã†ã£ã¦ã¤ã‘ã®æ–¹æ³•ã§ã™ã€‚ ã—ã‹ã—ã€ãã®ãƒšãƒ¼ã‚¸ã®ã»ã¨ã‚“ã©ã®éƒ¨åˆ†ãŒæä¾›æ™‚ã«ç”Ÿæˆã•ã‚Œã‚‹å ´åˆã¯ã€ ä»–ã®æ–¹æ³•を探ã™å¿…è¦ãŒã‚りã¾ã™ã€‚
サーãƒã§ SSI を許å¯ã™ã‚‹ã«ã¯ã€httpd.conf
ファイルã¾ãŸã¯ .htaccess
ãƒ•ã‚¡ã‚¤ãƒ«ã«æ¬¡ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–を指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™:
Options +Includes
ã“ã®æŒ‡å®šã¯ã€ãƒ•ァイルを SSI
ディレクティブã§è§£æžã•ã›ã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹ã¨ã„ã†ã“ã¨ã‚’ Apache
ã«ä¼ãˆã¾ã™ã€‚ã»ã¨ã‚“ã©ã®è¨å®šã§ã¯ãŠäº’ã„を上書ãã§ãã‚‹ã€è¤‡æ•°ã®
Options
ãŒã‚ã‚‹ã“ã¨ã«
注æ„ã—ã¦ãã ã•ã„。ãŠãらãã€è¨å®šãŒæœ€å¾Œã«è©•価ã•れるã“ã¨ã‚’
ä¿è¨¼ã•れるãŸã‚ã«ã€SSI を使用ã—ãŸã„ディレクトリ㫠Options
ディレクティブをé©ç”¨ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ã€‚
å…¨ã¦ã®ãƒ•ァイル㌠SSI
ディレクティブã§è§£æžã•れるã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。
ã©ã®ãƒ•ァイルãŒè§£æžã•れるã‹ã‚’ Apache ã«ä¼ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
ã“れを行ãªã†ã«ã¯äºŒã¤æ–¹æ³•ãŒã‚りã¾ã™ã€‚
次ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–を使ã†ã“ã¨ã§ã€ä¾‹ãˆã° .shtml
ã®ã‚ˆã†ãªç‰¹åˆ¥ãªãƒ•ァイル拡張åã‚’æŒã¤ãƒ•ァイルを解æžã™ã‚‹ã‚ˆã†
Apache ã«ä¼ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
ã“ã®æ–¹æ³•ã®æ¬ 点ã¯ã€ã‚‚ã—ç¾åœ¨ã®ãƒšãƒ¼ã‚¸ã« SSI ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã‚’åŠ ãˆãŸã„å ´åˆã€
ãれらã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ãŒå®Ÿè¡Œã•れるよã†ã«
.shtml
æ‹¡å¼µåã«ã™ã‚‹ãŸã‚ã€ãã®ãƒšãƒ¼ã‚¸ã®åå‰ã¨ã€
ãã®ãƒšãƒ¼ã‚¸ã¸ã®å…¨ã¦ã®ãƒªãƒ³ã‚¯ã‚’変更ã—ãªã‘れã°ãªã‚‰ãªã„ã“ã¨ã§ã™ã€‚
ã‚‚ã†ä¸€ã¤ã®æ–¹æ³•ã¯ã€XBitHack
ディレクティブを使用ã™ã‚‹ã“ã¨ã§ã™:
XBitHack on
XBitHack
ã¯ã€ãƒ•ァイルã®å®Ÿè¡Œãƒ“ットãŒç«‹ã£ã¦ã„ã‚‹å ´åˆã€
SSI ディレクティブã«ã‚ˆã‚Šè§£æžã™ã‚‹ã“ã¨ã‚’ Apache ã«ä¼ãˆã¾ã™ã€‚
従ã£ã¦ã€SSI ディレクティブをç¾åœ¨ã®ãƒšãƒ¼ã‚¸ã«åŠ ãˆã‚‹ãŸã‚ã«ã¯ã€
ファイルåを変更ã—ãªãã¦ã‚‚よãã€å˜ã« chmod
を使用ã—ã¦ãƒ•ァイルを実行å¯èƒ½ã«ã™ã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ã€‚
chmod +x pagename.html
行ãªã†ã¹ãã§ã¯ãªã„ã“ã¨ã«é–¢ã™ã‚‹çŸã„コメント。時々誰ã‹ãŒã€å…¨ã¦ã®
.html
ファイルを SSI ã§è§£æžã™ã‚‹ã‚ˆã† Apache ã«ä¼ãˆã‚Œã°ã€
ã‚ã–ã‚ã– .shtml
ã¨ã„ã†ãƒ•ァイルåã«ã™ã‚‹å¿…è¦ãŒãªã„ã¨ã„ã£ã¦
è–¦ã‚ã‚‹ã®ã‚’見るã“ã¨ã§ã—ょã†ã€‚ã“ã†ã„ã†äººãŸã¡ã¯ã€ãŠãらã
XBitHack
ã«ã¤ã„ã¦èžã„ãŸã“ã¨ãŒãªã„ã®ã§ã—ょã†ã€‚
ã“ã®æ–¹æ³•ã«ã¤ã„ã¦æ³¨æ„ã™ã‚‹ã“ã¨ã¯ã€ãŸã¨ãˆ SSI
ディレクティブを全ãå«ã¾ãªã„å ´åˆã§ã‚‚ã€Apache ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«
é€ã‚‹å…¨ã¦ã®ãƒ•ァイルを最後ã¾ã§èªã¿è¾¼ã¾ã›ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
ã“ã®æ–¹æ³•ã¯ã‹ãªã‚Šå‡¦ç†ã‚’é…ãã™ã‚‹ã‚‚ã®ã§ã‚りã€è‰¯ããªã„アイデアã§ã™ã€‚
ã‚‚ã¡ã‚ã‚“ã€Windows ã§ã¯ãã®ã‚ˆã†ãªå®Ÿè¡Œãƒ“ットをセット ã™ã‚‹ã‚ˆã†ãªã‚‚ã®ã¯ã‚りã¾ã›ã‚“ã®ã§ã‚ªãƒ—ションãŒå°‘ã—制é™ã•れã¦ã„ã¾ã™ã€‚
デフォルトã®è¨å®šã§ã¯ã€Apache 㯠SSI ページã«ã¤ã„ã¦æœ€çµ‚変更時刻や コンテンツã®é•·ã•ã‚’ HTTP ヘッダã«é€ã‚Šã¾ã›ã‚“。 å‹•çš„ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã§ã‚ã‚‹ãŸã‚ã€ãれらã®å€¤ã‚’計算ã™ã‚‹ã®ãŒé›£ã—ã„ã‹ã‚‰ã§ã™ã€‚ ã“ã®ãŸã‚ドã‚ュメントãŒã‚ャッシュã•れãªããªã‚Šã€ çµæžœã¨ã—ã¦ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®æ€§èƒ½ãŒé…ããªã£ãŸã‚ˆã†ã«æ„Ÿã˜ã•ã›ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ ã“れを解決ã™ã‚‹æ–¹æ³•ãŒäºŒã¤ã‚りã¾ã™:
XBitHack Full
è¨å®šã‚’使用ã™ã‚‹ã€‚
ã“ã®è¨å®šã«ã‚ˆã‚Šã€ã‚‚ã¨ã‚‚ã¨è¦æ±‚ã•れãŸãƒ•ã‚¡ã‚¤ãƒ«ã®æ™‚刻をå‚ç…§ã—ã€
èªã¿è¾¼ã¾ã‚Œã‚‹ãƒ•ァイルã®å¤‰æ›´æ™‚刻を無視ã—ã¦æœ€çµ‚変更時刻を決定ã™ã‚‹ã‚ˆã†
Apache ã«ä¼ãˆã¾ã™ã€‚SSI ディレクティブã¯ä»¥ä¸‹ã®æ–‡æ³•ã§è¨˜è¿°ã—ã¾ã™:
<!--#element attribute=value attribute=value ... -->
HTML ã®ã‚³ãƒ¡ãƒ³ãƒˆã®ã‚ˆã†ãªæ›¸å¼ã‚’ã—ã¦ã„ã‚‹ã®ã§ã€ã‚‚ã— SSI ã‚’æ£ã—ã動作å¯èƒ½ã«ã—ãªã‘れã°ã€ãƒ–ラウザã¯ãれを無視ã™ã‚‹ã§ã—ょã†ã€‚ ã—ã‹ã—ã€HTML ソースä¸ã§ã¯è¦‹ãˆã¾ã™ã€‚ã‚‚ã— SSI ã‚’æ£ã—ãè¨å®šã—ãŸãªã‚‰ã€ ディレクティブã¯ãã®çµæžœã¨ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚
element ã¯ãŸãã•ã‚“ã‚ã‚‹ã‚‚ã®ã‹ã‚‰ä¸€ã¤æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ 指定ã§ãã‚‹ã‚‚ã®ã®å¤§å¤šæ•°ã«ã¤ã„ã¦ã¯ã€æ¬¡å›žã‚‚ã†å°‘ã—詳ã—ã説明ã—ã¾ã™ã€‚ ã“ã“ã§ã¯ã€SSI ã§è¡Œãªã†ã“ã¨ãŒã§ãる例をã„ãã¤ã‹ç¤ºã—ã¾ã™ã€‚
<!--#echo var="DATE_LOCAL" -->
echo
è¦ç´ ã¯å˜ã«å¤‰æ•°ã®å€¤ã‚’出力ã—ã¾ã™ã€‚
CGI プãƒã‚°ãƒ©ãƒ ã«åˆ©ç”¨å¯èƒ½ãªç’°å¢ƒå¤‰æ•°ã®å…¨ã¦ã®
セットをå«ã‚€å¤šãã®æ¨™æº–変数ãŒã‚りã¾ã™ã€‚ã¾ãŸã€set
è¦ç´ を用ã„ã‚‹ã“ã¨ã§ã€ç‹¬è‡ªã®å¤‰æ•°ã‚’定義ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
出力ã•ã‚Œã‚‹æ—¥ä»˜ã®æ›¸å¼ãŒå¥½ãã§ã¯ãªã„å ´åˆã€ãã®æ›¸å¼ã‚’ä¿®æ£ã™ã‚‹ãŸã‚ã«ã€
config
è¦ç´ ã« timefmt
属性を使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
<!--#config timefmt="%A %B %d, %Y" -->
Today is <!--#echo var="DATE_LOCAL" -->
This document last modified <!--#flastmod file="index.html" -->
ã“ã®è¦ç´ ã‚‚ timefmt
フォーマットã®è¨å®šã«å¾“ã„ã¾ã™ã€‚
ã“れã¯ã€å…¨ã¦ã®äººã®ãŠæ°—ã«å…¥ã‚Šã§ã‚ã‚‹ ``ヒットカウンタ'' ã®ã‚ˆã†ãª CGI プãƒã‚°ãƒ©ãƒ ã®çµæžœã‚’出力ã™ã‚‹ SSI ã®ã‚ˆã‚Šä¸€èˆ¬çš„ãªä½¿ç”¨ã®ã†ã¡ã®ä¸€ã¤ã§ã™ã€‚
<!--#include virtual="/cgi-bin/counter.pl" -->
以下ã¯ã€SSI を使用ã—㦠HTML ドã‚ュメントã«ãŠã„ã¦ã§ãã‚‹ã“ã¨ã®ã„ãã¤ã‹ã®ç‰¹åˆ¥ãªä¾‹ã§ã™ã€‚
å…ˆã«ã€ãƒ‰ã‚ãƒ¥ãƒ¡ãƒ³ãƒˆãŒæœ€å¾Œã«å¤‰æ›´ã•れãŸã®ã¯ã„ã¤ã‹ã‚’ ユーザã«é€šçŸ¥ã™ã‚‹ãŸã‚ã« SSI を使用ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‚’è¿°ã¹ã¾ã—ãŸã€‚ ã—ã‹ã—ãªãŒã‚‰ã€å®Ÿéš›ã®æ–¹æ³•ã¯ã€ã„ãã¶ã‚“å•題ã®ã¾ã¾ã«ã—ã¦ãŠãã¾ã—ãŸã€‚ HTML ドã‚ュメントã«é…ç½®ã•ã‚ŒãŸæ¬¡ã®ã‚³ãƒ¼ãƒ‰ã¯ã€ãƒšãƒ¼ã‚¸ã«ãã®ã‚ˆã†ãª タイムスタンプを入れるã§ã—ょã†ã€‚ã‚‚ã¡ã‚ã‚“ã€ä¸Šè¿°ã®ã‚ˆã†ã«ã€ SSI ã‚’æ£ã—ã動作å¯èƒ½ã«ã—ã¦ãŠãå¿…è¦ãŒã‚りã¾ã™ã€‚
<!--#config timefmt="%A %B %d, %Y" -->
This file last modified <!--#flastmod file="ssi.shtml" -->
ã‚‚ã¡ã‚ã‚“ã€ssi.shtml
ã®éƒ¨åˆ†ã‚’実際ã®å½“該ファイルåã¨ç½®ãæ›ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
ã‚‚ã—ã€ã‚らゆるファイルã«å¼µã‚‹ã“ã¨ãŒã§ãる一般的ãªã‚³ãƒ¼ãƒ‰ã‚’探ã—ã¦ã„ã‚‹ãªã‚‰ã€
ã“れã¯ä¸ä¾¿ã§ã‚ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。ãŠãらããã®å ´åˆã¯ã€
ãã†ã™ã‚‹ä»£ã‚りã«å¤‰æ•° LAST_MODIFIED
を使用ã—ãŸã„ã¨è€ƒãˆã‚‹ã§ã—ょã†:
<!--#config timefmt="%D" -->
This file last modified <!--#echo var="LAST_MODIFIED" -->
timefmt
書å¼ã«ã¤ã„ã¦ã®ã‚ˆã‚Šè©³ç´°ã«ã¤ã„ã¦ã¯ã€ãŠå¥½ã¿ã®æ¤œç´¢ã‚µã‚¤ãƒˆã«è¡Œãã€
strftime
ã§æ¤œç´¢ã—ã¦ã¿ã¦ãã ã•ã„。文法ã¯åŒã˜ã§ã™ã€‚
ã‚‚ã—æ•°ãƒšãƒ¼ã‚¸ã‚’è¶…ãˆã‚‹ãƒšãƒ¼ã‚¸ã‚’æŒã¤ã‚µã‚¤ãƒˆã‚’管ç†ã—ã¦ã„ã‚‹ãªã‚‰ã°ã€ 全ページã«å¯¾ã—ã¦å¤‰æ›´ã‚’行ãªã†ã“ã¨ãŒæœ¬å½“ã«è‹¦ç—›ã¨ãªã‚Šå¾—ã‚‹ã“ã¨ãŒ 分ã‹ã‚‹ã§ã—ょã†ã€‚å…¨ã¦ã®ãƒšãƒ¼ã‚¸ã«æ¸¡ã£ã¦ã‚ã‚‹ç¨®ã®æ¨™æº–çš„ãªå¤–観を ç¶æŒã—よã†ã¨ã—ã¦ã„ã‚‹ãªã‚‰ã°ç‰¹ã«ãã†ã§ã—ょã†ã€‚
ãƒ˜ãƒƒãƒ€ã‚„ãƒ•ãƒƒã‚¿ç”¨ã®æŒ¿å…¥ç”¨ãƒ•ァイルを使用ã™ã‚‹ã“ã¨ã§ã€
ã“ã®ã‚ˆã†ãªæ›´æ–°ã«ã‹ã‹ã‚‹è² 担を減らã™ã“ã¨ãŒã§ãã¾ã™ã€‚
一ã¤ã®ãƒ•ッタファイルを作æˆã—ã€ãれを include
SSI コマンドã§å„ページã«å…¥ã‚Œã‚‹ã ã‘ã§æ¸ˆã¿ã¾ã™ã€‚include
è¦ç´ ã¯ã€file
属性ã¾ãŸã¯ virtual
属性ã®ã„ãšã‚Œã‹ã‚’使用ã—ã¦ã©ã®ãƒ•ァイルを挿入ã™ã‚‹ã‹ã‚’決ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
file
属性ã¯ã€ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‹ã‚‰ã®ç›¸å¯¾ãƒ‘スã§ç¤ºã•れãŸ
ファイルパスã§ã™ã€‚
ãれ㯠/ ã§å§‹ã¾ã‚‹çµ¶å¯¾ãƒ•ァイルパスã«ã¯ã§ããšã€ã¾ãŸã€ãã®ãƒ‘スã®ä¸€éƒ¨ã« ../
ã‚’å«ã‚€ã“ã¨ãŒã§ããªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚virtual
属性ã¯ã€ãŠãらãより便利ã ã¨æ€ã„ã¾ã™ãŒã€æä¾›ã™ã‚‹ãƒ‰ã‚ュメントã‹ã‚‰ã®ç›¸å¯¾
URL ã§æŒ‡å®šã™ã¹ãã§ã™ã€‚ãれ㯠/ ã§å§‹ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€
æä¾›ã™ã‚‹ãƒ•ァイルã¨åŒã˜ã‚µãƒ¼ãƒä¸Šã«å˜åœ¨ã—ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。
<!--#include virtual="/footer.html" -->
ç§ã¯æœ€å¾Œã®äºŒã¤ã‚’組ã¿åˆã‚ã›ã¦ã€LAST_MODIFIED
ディレクティブをフッタファイルã®ä¸ã«ç½®ãã“ã¨ãŒã‚ˆãã‚りã¾ã™ã€‚
SSI ディレクティブã¯ã€æŒ¿å…¥ç”¨ã®ãƒ•ァイルã«å«ã¾ã›ãŸã‚Šã€
挿入ファイルã®ãƒã‚¹ãƒˆã‚’ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã™ãªã‚ã¡ã€
挿入用ã®ãƒ•ァイルã¯ä»–ã®ãƒ•ァイルをå†å¸°çš„ã«æŒ¿å…¥ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
時刻書å¼ã‚’ config
ã§è¨å®šã§ãã‚‹ã“ã¨ã«åŠ ãˆã¦ã€
æ›´ã«äºŒã¤ config
ã§è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
通常ã€SSI ディレクティブã§ä½•ã‹ãŒã†ã¾ãã„ã‹ãªã„ã¨ãã¯ã€ 次ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºåŠ›ã•れã¾ã™ã€‚
[an error occurred while processing this directive]
ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ä»–ã®ã‚‚ã®ã«ã—ãŸã„å ´åˆã€config
è¦ç´ ã® errmsg
属性ã§å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™:
<!--#config errmsg="[It appears that you don't know how to use SSI]" -->
ãŠãらãã€ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’決ã—ã¦è¦‹ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。 ãªãœãªã‚‰ã€ãã®ã‚µã‚¤ãƒˆãŒç”ŸããŸçŠ¶æ…‹ã«ãªã‚‹å‰ã« SSI ディレクティブã«é–¢ã™ã‚‹ å…¨ã¦ã®å•題を解決ã—ã¦ã„ã‚‹ã¯ãšã ã‹ã‚‰ã§ã™ã€‚(ãã†ã§ã™ã‚ˆã?)
ãã—ã¦ã€config
ã«ãŠã„㦠sizefmt
属性を使用ã™ã‚‹ã“ã¨ã§ã€
è¿”ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã®æ›¸å¼ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ãƒã‚¤ãƒˆæ•°ã«ã¯ bytes
ã‚’ã€é©å½“ã« Kb ã‚„ Mb
ã«çŸç¸®ã•ã›ã‚‹ã«ã¯ abbrev
を指定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
今後数ヶ月ã®ã†ã¡ã«ã€å°ã•㪠CGI プãƒã‚°ãƒ©ãƒ 㨠SSI
を使用ã™ã‚‹è¨˜äº‹ã‚’出ã—ãŸã„ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚ã“ã“ã§ã¯ãれã¨ã¯åˆ¥ã«ã€
exec
è¦ç´ ã«ã‚ˆã£ã¦è¡Œãªã†ã“ã¨ãŒã§ãã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
SSI ã«ã‚·ã‚§ãƒ« (æ£ç¢ºã«ã¯ /bin/sh
。Win32 ãªã‚‰ã° DOS シェル)
を使用ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
下記ã®ä¾‹ã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒªã‚¹ãƒˆå‡ºåŠ›ã‚’è¡Œãªã„ã¾ã™ã€‚
<pre>
<!--#exec cmd="ls" -->
</pre>
Windows 上ã§ã¯ã€
<pre>
<!--#exec cmd="dir" -->
</pre>
Windows 上ã§ã¯ã€ã“ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒ†ã‚£ãƒ–ã«ã‚ˆã£ã¦ã„ãã¤ã‹ã®å¥‡å¦™ãª
書å¼ã«æ°—ã¥ãã§ã—ょã†ã€‚ãªãœãªã‚‰ dir
ã®å‡ºåŠ›ãŒæ–‡å—列
``<dir
>'' ã‚’å«ã¿ã€ãƒ–ラウザを混乱ã•ã›ã‚‹ã‹ã‚‰ã§ã™ã€‚
ã“ã®æ©Ÿèƒ½ã¯éžå¸¸ã«å±é™ºã§ã‚りã€ã©ã‚“ãªã‚³ãƒ¼ãƒ‰ã§ã‚‚ exec
ã‚¿ã‚°ã«åŸ‹ã‚è¾¼ã¾ã‚Œã¦ã—ã¾ãˆã°å®Ÿè¡Œã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例ãˆã°
`` ゲストブック '' ã®ã‚ˆã†ã«ã€ã‚‚ã—ã€
ユーザãŒãƒšãƒ¼ã‚¸ã®å†…容を編集ã§ãる状æ³ã«ã‚ã‚‹ãªã‚‰ã°ã€
ã“ã®æ©Ÿèƒ½ã‚’ç¢ºå®Ÿã«æŠ‘åˆ¶ã—ã¦ãã ã•ã„。Options
ディレクティブ㮠IncludesNOEXEC
引数を指定ã™ã‚‹ã“ã¨ã§ã€
SSI ã¯è¨±å¯ã™ã‚‹ã‘れ㩠exec
機能ã¯è¨±å¯ã—ãªã„よã†ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
コンテンツを出力ã™ã‚‹ã“ã¨ã«åŠ ãˆã€Apache SSI ã¯å¤‰æ•°ã‚’è¨å®šã—〠ãã—ã¦æ¯”è¼ƒã¨æ¡ä»¶åˆ†å²ã«ãã®å¤‰æ•°ã‚’使用ã§ãる機能をæä¾›ã—ã¦ã„ã¾ã™ã€‚
ã“ã®è¨˜äº‹ã§è¿°ã¹ãŸå¤§éƒ¨åˆ†ã®æ©Ÿèƒ½ã¯ã€Apache 1.2 以é™ã‚’使用ã—ã¦ã„ã‚‹å ´åˆã®ã¿åˆ©ç”¨å¯èƒ½ã§ã™ã€‚ã‚‚ã¡ã‚ã‚“ã€ã‚‚ã— Apache 1.2 以é™ã‚’使用ã—ã¦ãªã„å ´åˆã€ç›´ã¡ã«ã‚¢ãƒƒãƒ—グレードã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã•ãã€ä»Šãれを行ãªã„ãªã•ã„。ãれã¾ã§å¾…ã£ã¦ã„ã¾ã™ã€‚
set
ディレクティブを使用ã—ã¦ã€
後ã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã«å¤‰æ•°ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“れã¯å¾Œã®èª¬æ˜Žã§å¿…è¦ã«ãªã‚‹ã®ã§ã€ã“ã“ã§ãれã«ã¤ã„ã¦è¿°ã¹ã¦ã„ã¾ã™ã€‚
文法ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™:
<!--#set var="name" value="Rich" -->
ã“ã®ã‚ˆã†ã«å˜ç´”ã«æ–‡å—ã©ãŠã‚Šã«è¨å®šã™ã‚‹ã“ã¨ã«åŠ ãˆã€
環境変数や上記ã®å¤‰æ•°
(例ãˆã° LAST_MODIFIED
ã®ã‚ˆã†ãª)
ã‚’å«ã‚€ä»–ã®ã‚らゆる変数を値をè¨å®šã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
変数åã®å‰ã«ãƒ‰ãƒ«è¨˜å· ($) を使用ã™ã‚‹ã“ã¨ã§ã€
ãれãŒãƒªãƒ†ãƒ©ãƒ«æ–‡å—列ã§ã¯ãªãã¦å¤‰æ•°ã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚
<!--#set var="modified" value="$LAST_MODIFIED" -->
ãƒ‰ãƒ«è¨˜å· ($) ã‚’æ–‡å—ã¨ã—ã¦å¤‰æ•°ã®å€¤ã«å…¥ã‚Œã‚‹ã«ã¯ã€ ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã«ã‚ˆã£ã¦ãƒ‰ãƒ«è¨˜å·ã‚’エスケープã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
<!--#set var="cost" value="\$100" -->
最後ã«ãªã‚Šã¾ã™ãŒã€é•·ã„æ–‡å—列ã®ä¸ã«å¤‰æ•°ã‚’ç½®ããŸã„å ´åˆã§ã€ 変数åãŒä»–ã®æ–‡å—ã¨ã¶ã¤ã‹ã‚‹å¯èƒ½æ€§ãŒã‚り〠ãã‚Œã‚‰ã®æ–‡å—ã«ã¤ã„ã¦æ··ä¹±ã—ã¦ã—ã¾ã†å ´åˆã€ã“ã®æ··ä¹±ã‚’å–り除ããŸã‚〠変数åã‚’ä¸æ‹¬å¼§ã§å›²ã‚€ã“ã¨ãŒã§ãã¾ã™ (ã“れã«ã¤ã„ã¦ã®è‰¯ã„例を示ã™ã®ã¯é›£ã—ã„ã®ã§ã™ãŒã€ ãŠãらã分ã‹ã£ã¦ã„ãŸã ã‘ã‚‹ã§ã—ょã†)。
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->
ã•ã¦ã€å¤‰æ•°ã‚’æŒã£ã¦ã„ã¦ã€
ãれらã®å€¤ã‚’è¨å®šã—ã¦æ¯”較ã™ã‚‹ã“ã¨ãŒã§ãã‚‹ã®ã§ã™ã‹ã‚‰ã€
æ¡ä»¶ã‚’表ã™ãŸã‚ã«ãれらを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Š
SSI ã¯ã‚る種ã®å°ã•ãªãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã«ãªã£ã¦ã„ã¾ã™ã€‚
mod_include
ã¯æ¡ä»¶ã‚’表ç¾ã™ã‚‹ãŸã‚ã« if
,
elif
, else
, endif
æ§‹é€ ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã£ã¦ã€
一ã¤ã®å®Ÿéš›ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰è¤‡æ•°ã®è«–ç†ãƒšãƒ¼ã‚¸ã‚’効果的ã«ç”Ÿæˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
æ¡ä»¶æ§‹é€ ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™:
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
test_condition
ã¯ã‚らゆる種類ã®è«–ç†çš„æ¯”較をã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
値を比較ã—ãŸã‚Šã€ãã®å€¤ãŒ ``真'' ã‹ã©ã†ã‹ã‚’評価ã—ã¾ã™
(空ã§ãªã„ãªã‚‰ä¸Žãˆã‚‰ã‚ŒãŸæ–‡å—列ã¯çœŸã§ã™)。
利用å¯èƒ½ãªæ¯”較演算åã®å…¨ã¦ã®ãƒªã‚¹ãƒˆã«ã¤ã„ã¦ã¯ã€
mod_include
ドã‚ュメンテーションをå‚ç…§ã—ã¦ãã ã•ã„。
ã“ã“ã§ã¯ã€ã“ã®æ§‹é€ ã‚’ã©ã†ä½¿ç”¨ã™ã‚‹ã‹ã®ä¾‹ã‚’ã„ãã¤ã‹ç¤ºã—ã¾ã™ã€‚
è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã§æ¬¡ã®è¡Œã‚’記述ã—ã¾ã™:
BrowserMatchNoCase macintosh Mac
BrowserMatchNoCase MSIE InternetExplorer
ã“れã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒ Macintosh 上ã§ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã‚¨ã‚¯ã‚¹ãƒ—ãƒãƒ¼ãƒ©ãŒå‹•ã„ã¦ã„ã‚‹å ´åˆã€ç’°å¢ƒå¤‰æ•° ``Mac'' 㨠``InternetExplorer'' を真ã¨è¨å®šã—ã¾ã™ã€‚
次ã«ã€SSI ãŒå¯èƒ½ã«ãªã£ãŸãƒ‰ã‚ュメントã§ä»¥ä¸‹ã‚’行ãªã„ã¾ã™:
<!--#if expr="${Mac} && ${InternetExplorer}" -->
Apologetic text goes here
<!--#else -->
Cool JavaScript code goes here
<!--#endif -->
Mac 上㮠IE ã«å¯¾ã—ã¦ä½•ã‹æ€ã†ã¨ã“ã‚ãŒã‚ã‚‹ã‚ã‘ã§ã‚りã¾ã›ã‚“。 ä»–ã§ã¯å®Ÿè¡Œã§ãã¦ã„ã‚‹ã„ãã¤ã‹ã® JavaScript ã‚’ Mac 上㮠IE ã§å®Ÿè¡Œã•ã›ã‚‹ã®ã«ã€å…ˆé€±æ•°æ™‚間苦労ã—ãŸã¨ã„ã†ã ã‘ã®ã“ã¨ã§ã™ã€‚ 上ã®ä¾‹ã¯ãã®æš«å®šçš„ãªå¯¾å‡¦æ–¹æ³•ã§ã™ã€‚
ä»–ã®ã©ã‚“ãªå¤‰æ•° (ã‚ãªãŸãŒå®šç¾©ã™ã‚‹ã‚‚ã®ã€
ã¾ãŸã¯æ™®é€šã®ç’°å¢ƒå¤‰æ•°ã®ã„ãšã‚Œã‹) ã‚‚ã€æ¡ä»¶æ–‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
Apache 㯠SetEnvIf
ディレクティブや他ã®é–¢é€£
ディレクティブを使用ã—ã¦ç’°å¢ƒå¤‰æ•°ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“ã®æ©Ÿèƒ½ã«ã‚ˆã‚Šã€CGI
ã«é ¼ã‚‹ã“ã¨ãªãã‹ãªã‚Šè¤‡é›‘ãªå‹•çš„ãªã“ã¨ã‚’ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
SSI ã¯ç¢ºã‹ã« CGI ã‚„å‹•çš„ãªã‚¦ã‚§ãƒ–ページを生æˆã™ã‚‹ä»–ã®æŠ€è¡“ã«ä»£ã‚ã‚‹ã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“。 ã—ã‹ã—ã€ãŸãã•ã‚“ã®ä½™åˆ†ãªä½œæ¥ã‚’ã›ãšã«ã€ å°‘é‡ã®å‹•çš„ãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã‚’åŠ ãˆã‚‹ã«ã¯ã™ãã‚ŒãŸæ–¹æ³•ã§ã™ã€‚