SHTMLとASPは似ています。 SHTMLにちなんで名付けられたファイルでは、ASPの指示と同様に、いくつかのSSI命令が使用されています。 SSI命令をSHTMLファイルに記述できます。クライアントがこれらのSHTMLファイルにアクセスするとき、
サーバー側は、これらのSHTMLファイルを読み取り、解釈し、SHTMLファイルに含まれるSSI命令を解釈します。たとえば、SSI命令を使用して、SHTMLファイルの他のHTMLファイル(#include)を参照できます。サーバーからクライアントに送信されたファイルは、すでに説明されているSHTMLにSSIの指示がないことです。 HTMLにはない機能を実装します。つまり、ダイナミクスを実装できます
SHTMLは、HTMLの進化であると言えます。 Sinaのニュースシステムと同様に、ニュースコンテンツは修正されていますが、その広告とメニューは#includeで引用されています。
現在、主に次の使用があります。
1。サーバー側の環境変数を表示<#echo>
2。テキストコンテンツをドキュメントに直接挿入<#include>
3。Webドキュメント関連情報を表示<#flastmod> <#fsize>(ファイルの作成日/サイズなど)
4。サーバー上でさまざまなプログラムを直接実行<#exec>(CGIやその他の実行可能プログラムなど)
5.SSI情報表示形式を設定<#config>(ファイル作成日/サイズ表示方法など)
高度なSSI <XSSI>は、条件付きステートメントの場合に使用する変数を設定できます。
SSIを使用します
SSIは、Webサーバーに提供される一連のコマンドです。これらのコマンドは、HTMLドキュメントのコメントコンテンツに直接埋め込まれています。のように:
<#include file = info.htm->
これはSSI指令であり、info.htmの内容を現在のページにコピーするために使用されます。訪問者が閲覧すると、他のHTMLドキュメントがinfo.htmのコンテンツを表示することがわかります。
他のSSI命令の使用フォームは、基本的に現在言及されているものと同じです。 SSIの使用法は、小さなコードを挿入しているだけであり、使用フォームは非常に簡単であることがわかります。
もちろん、WebサーバーがSSIをサポートしていない場合、単に注釈情報として扱い、コンテンツを直接スキップします。ブラウザはこの情報も無視します。
WebサーバーでSSI機能を構成する方法は?
一部のWebサーバー(IIS 4.0/Sambar 4.2など)では、#includeディレクティブを含むファイルは、SSIインタープリターにマッピングされた拡張機能を使用する必要があります。それ以外の場合、WebサーバーはSSI指令を処理しません。デフォルトでは、extensions .stm、.shtm、および.shtmlは、interpreter(ssinc.dll)にマッピングされます。
Apacheは設定に基づいており、次のようなsrm.confを変更します。
addType Text/X-Server-Parsed-Html .shtmlは、.shtml拡張機能を持つファイルに対してのみSSIディレクティブを解析します
addType Text/X-Server-Parsed-HTML .HTMLは、すべてのHTMLドキュメントのSSIディレクティブを解析します
Netscape Webサーバーは、Administration Server(Administrative Server)を使用してSSI機能を有効にすることができます。
ウェブサイトはサーバー管理プログラムでマッピングタグを使用し、コンテンツタイプをwwwserver/html-ssiとして追加します
CERNサーバーはSSIをサポートしていません。 SSI詐欺法を使用できます。 http://sw.cse.bris.ac.uk/webtools/fakessi.htmlでPerlスクリプトをダウンロードして、CERNサーバーにSSIの指示を使用させます。 (エグゼクティブ指令はサポートされていません。)
基本的なSSI命令形式
基本的なSSI命令形式:
プログラムコード:
<!----命令名=命令パラメーター>
<!----命令名=命令パラメーター>
のように
プログラムコード:
<#include file = info.htm->
<#include file = info.htm->
説明:
1。<! - > HTML構文の注釈です。この情報は、WebサーバーがSSIをサポートしていない場合に無視されます。
2。#includeはSSI指令の1つです。
3。ファイルはincludeのパラメーターです、info.htmはパラメーター値であり、この命令に含まれるドキュメント名を参照します。
知らせ:
1。<! - #番号の間にスペースはなく、SSI命令とパラメーターのみが存在します。
2。上記の句読点=、誰も欠落していることはありません。
3。SSIの命令はケースに敏感であるため、パラメーターは機能するために小文字でなければなりません。
SSI命令の使用に関する詳細な説明
#echoデモンストレーション
効果:
環境変数をページに挿入します。
文法:
プログラムコード:
<! - #echo var = variable name->
<! - #echo var = variable name->
このドキュメントの名前:プログラムコード:
<! - #echo var = document_name->
<! - #echo var = document_name->
現在の時刻:プログラムコード:
<! - #echo var = date_local->
<! - #echo var = date_local->
IPアドレスはプログラムコードです。
<! - #echo var = remote_addr->
<! - #echo var = remote_addr->
#includeデモンストレーション
効果:
テキストファイルの内容をドキュメントページに直接挿入します。
文法:
プログラムコード:
<#include file = file name->
<#include virtual = file name->
<#include file = file name->
<#include virtual = file name->
ファイルファイル名は、#includeディレクティブを使用してドキュメントが配置されているディレクトリに対する相対パスです。付属のファイルは、同じレベルのディレクトリまたはそのサブディレクトリにありますが、前のレベルディレクトリにはありません。現在のディレクトリのnav_head.htmドキュメントがfile = nav_head.htmの場合。
仮想ファイル名は、Webサイト上の仮想ディレクトリへのフルパスです。サーバードキュメントのルートディレクトリの下にあるhoyiディレクトリのnav_head.htmファイルを意味する場合。次に、file =/hoyi/nav_head.htmです
パラメーター:
ファイルこのドキュメントに関連するコンテンディングファイルの場所を指定します
仮想サーバードキュメントのルートディレクトリに関連する場所を指定します
知らせ:
1.ファイル名に拡張子が必要です。
2。含まれたファイルには、任意のファイル拡張子を持つことができます。 HTM拡張機能を直接使用するのが最も便利だと思います。 Microsoftは.inc拡張機能を使用することをお勧めします(趣味に依存します)。
例:
プログラムコード:
<#include file = nav_head.htm->ヘッダーファイルを現在のページに挿入します
<#include file = nav_foot.htm->テールファイルを現在のページに挿入します
<#include file = nav_head.htm->ヘッダーファイルを現在のページに挿入します
<#include file = nav_foot.htm->テールファイルを現在のページに挿入します
#FlastModおよび#Fsizeデモンストレーション
関数:#flastModファイル最終更新日
#fsizeファイルの長さ
文法:
プログラムコード:
<! - #flastMod file = file name->
<! - #fsize file = file name->
<! - #flastMod file = file name->
<! - #fsize file = file name->
パラメーター:
ファイル現在のディレクトリのinfo.txtドキュメントを表すinfo.txtなど、このドキュメントに関連するファイルの場所を指定します。
Virtual /hoyi/info.txtなどのサーバードキュメントのルートディレクトリに関連する場所を指定します
知らせ:
ファイル名に拡張機能が必要です。
例:
プログラムコード:
<! - #flastMod file = news.htm->
<! - #flastMod file = news.htm->
現在のディレクトリにnews.htmファイルの最新の更新日を現在のページに挿入します
プログラムコード:
<! - #fsize file = news.htm->
<! - #fsize file = news.htm->
現在のページに現在のディレクトリにnews.htmのファイルサイズを入力します
#EXECデモンストレーション
効果:
外部プログラムの出力をページに挿入します。使用されるパラメーターがCMDまたはCGIであるかどうかに応じて、CGIプログラムまたは通常のアプリケーションからの入力に挿入できます。
文法:
プログラムコード:
<! - #exec cmd = file name->
<! - #exec cgi = file name->
<! - #exec cmd = file name->
<! - #exec cgi = file name->
パラメーター:
CMD通常のアプリケーション
CGI CGIスクリプトプログラム
例:
プログラムコード:
<! - #exec cmd = cat /etc /passwd->パスワードファイルが表示されます
<! - #exec cmd = dir /b->は、現在のディレクトリにファイルのリストを表示します
<! - #exec cgi =/cgi-bin/gb.cgi-> CGIプログラムgb.cgiが実行されます。
<! - #exec cgi =/cgi-bin/access_log.cgi-> CGIプログラムAccess_log.cgiが実行されます。
<! - #exec cmd = cat /etc /passwd->パスワードファイルが表示されます
<! - #exec cmd = dir /b->は、現在のディレクトリにファイルのリストを表示します
<! - #exec cgi =/cgi-bin/gb.cgi-> CGIプログラムgb.cgiが実行されます。
<! - #exec cgi =/cgi-bin/access_log.cgi-> CGIプログラムAccess_log.cgiが実行されます。
知らせ:
上記の例からわかるように、この命令は非常に便利ですが、セキュリティの問題もあります。
禁止方法:
。 Apache、削除オプションは、access.confのexeccgiラインを含みます。
。 IISでは、#EXECコマンドを無効にするには、SSIEXECDISABLEメタデータを変更できます。
#config
関数:クライアントブラウザに返されるエラーメッセージ、日付、ファイルサイズの形式を指定します。
文法:
プログラムコード:
<! - #configerrmsg =カスタムエラーメッセージ - >
<! - #configsizefmt = display unit->
<! - #configtimefmt =展示形式 - >
<! - #configerrmsg =カスタムエラーメッセージ - >
<! - #configsizefmt = display unit->
<! - #configtimefmt =展示形式 - >
パラメーター:
ERRMSGカスタムSSI実行エラーメッセージは、好きな方法で使用できます。
sizefmtファイルサイズ表示方法、デフォルトはバイトメソッド(バイト)をkilobyteメソッド(abbrev)に変更できます
TimeFMT Time Displayメソッド、最も柔軟な構成属性。
例:存在しないファイルのサイズを表示します
プログラムコード:
<! - #configerrmsg =サーバー実行エラー、管理者[email protected]に連絡してください、ありがとう! - >
<! - #fsize file = no file.htm->
<! - #configerrmsg =サーバー実行エラー、管理者[email protected]に連絡してください、ありがとう! - >
<! - #fsize file = no file.htm->
キロバイトのファイルサイズを表示します
プログラムコード:
<! - #configsizefmt = abbrev->
<! - #fsizeFile = news.htm->
<! - #configsizefmt = abbrev->
<! - #fsizeFile = news.htm->
特定の時間形式で時間を表示します
プログラムコード:
<! - #configtimefmt =%y Year/%m月%d日と週%w北京時間%h:%m:%s、%y年は%j日間j日です。
<! - #echo var = date_local->は、今日の曜日、月、タイムゾーンを示します。
<! - #configtimefmt =今日の%a、%b、サーバータイムゾーンは%z、はい - >
<! - #echo var = date_local->
<! - #configtimefmt =%y Year/%m月%d日と週%w北京時間%h:%m:%s、%y年は%j日間j日です。
<! - #echo var = date_local->は、今日の曜日、月、タイムゾーンを示します。
<! - #configtimefmt =今日の%a、%b、サーバータイムゾーンは%z、はい - >
<! - #echo var = date_local->
xssi
XSSI(Extended SSI)は、Apache 1.2以降のmod-cludeモジュールに組み込まれた一連の高度なSSI命令です。
その中で、利用可能な指示は次のとおりです。
#printenv
#セット
#もし
#printenv
機能:Webサーバー環境に現在存在するすべての環境変数を表示します。
構文:プログラムコード:
<! - #printenv->
<! - #printenv->
パラメーター:なし
例:
プログラムコード:
<! - #printenv->
<! - #printenv->
#セット
関数:後続のIFステートメントで使用する変数に値を割り当てることができます。
構文:プログラムコード:
<! - #set var =変数名値=変数値 - >
<! - #set var =変数名値=変数値 - >
パラメーター:なし
例:プログラムコード:
<! - #set var = colorValue = red->
<! - #set var = colorValue = red->
#もし
関数:IFステートメントを使用するときに計算要件に従って表示されるデータを変更できるページを作成します。
構文:プログラムコード:
<! - #expr = $ $ variable name =変数値a->
コンテンツを表示します
<! - #elif expr = $変数名=変数値b - >
コンテンツを表示します
<! - #else->
コンテンツを表示します
<! - #endif->
<! - #expr = $ $ variable name =変数値a->
コンテンツを表示します
<! - #elif expr = $変数名=変数値b - >
コンテンツを表示します
<! - #else->
コンテンツを表示します
<! - #endif->
例:
プログラムコード:
<! - #expr = $ server_name = http://www.31896.net/->
サーバーセキュリティディスカッションエリアhttp://www.31896.net/へようこそ。
<! - #elif expr = $ server_name = http://www.fineacer.org/->
Qingchang Computer Network Security Online http://www.fineacer.org/へようこそ。
<! - #else->
サーバーセキュリティディスカッションエリアへようこそ!
<! - #endif->
<! - #expr = $ server_name = http://www.31896.net/->
サーバーセキュリティディスカッションエリアhttp://www.31896.net/へようこそ。
<! - #elif expr = $ server_name = http://www.fineacer.org/->
Qingchang Computer Network Security Online http://www.fineacer.org/へようこそ。
<! - #else->
サーバーセキュリティディスカッションエリアへようこそ!
<! - #endif->
注:以前の手順で使用されたバックスラッシュは、内部引用符を置き換えるために使用されるため、終了式として解釈されないようにします。省略されていません。
1。構成コマンド
configコマンドは、主にSSIのデフォルト設定を変更するために使用されます。で:
ERRMSG:デフォルトのエラーメッセージを設定します。通常、ユーザーが設定したエラー情報を返すために、ERRMSGパラメーターをHTMLファイルの他のSSIコマンドの前に配置する必要があります。
<! - #configerrmsg =エラー! [email protected]>にメールしてください
TimeFMT:日付と時刻の使用形式を定義します。 TimeFMTパラメーターは、ECHOコマンドの前に使用する必要があります。
<! - #configtimefmt =%a、%b%d、%y->
<! - #echo var = last_modified->
結果は次のように表示されます。
2000年4月12日水曜日
おそらく、ユーザーは上記の例で使用されている%a%b%dに不慣れです。テーブルの形でSSIで、より一般的に使用される日付および時刻形式のいくつかを要約しましょう。
sizefmt:ファイルサイズがバイト、キロバイト、またはメガバイトで表されるかどうかを決定します。バイトの場合、パラメーター値はバイトです。略語は、キロバイトおよびメガバイトに使用できます。同様に、sizefmtパラメーターは、FSIZEコマンドを使用する前に配置する必要があります。
<! - #configsizefmt = bytes - >
<! - #fsize file = index.html->
2。コマンドを含めます
includeコマンドは、他のドキュメントからテキストまたは写真を現在解析されているドキュメントに挿入できます。これは、SSI全体の鍵です。 includeコマンドを介して、サイト全体を即座に更新するために1つのファイルを変更するだけです!
includeコマンドには2つの異なるパラメーターがあります。
Virtual:サーバー側のドキュメントへの仮想パスを提供します。例えば:
<#include virtual =/include/header.html->
ファイル:現在のディレクトリへの相対パスを与えます。ここで、../は使用できません。また、絶対パスを使用できません。例えば:
<#include file = header.html->
これには、各ディレクトリにHeader.htmlファイルが含まれる必要があります。
3。エコーコマンド
Echoコマンドは、次の環境変数を表示できます。
document_name:現在のドキュメントの名前を表示します。
<! - #echo var = document_name->
結果は次のように表示されます。
index.html
document_uri:現在のドキュメントへの仮想パスを表示します。例えば:
<! - #echo var = document_uri->
結果は次のように表示されます。
/yourdirectory/yourfilename.html
ウェブサイトが成長し続けるにつれて、長くて長くなっているURLは間違いなく頭痛になります。 SSIを使用すると、すべてが解決されます。 Webサイトのドメイン名とSSIコマンドを組み合わせて、完全なURLを表示できるためです。つまり、次のとおりです。
http:// yourdomain%3c! - /#echo var =&... uot; - >
query_string_unescaped:逃げられていないクライアントが送信したクエリ文字列を表示し、すべての特殊文字の前にはエスケープ文字が付いています。例えば:
<! - #echo var = query_string_unescaped->
date_local:サーバー設定タイムゾーンの日付と時刻を表示します。ユーザーは、configコマンドのtimefmtパラメーターに基づいて出力情報をカスタマイズできます。例えば:
<! - #configtimefmt =%a、%bの%d、年%y->
<! - #echo var = date_local->
結果は次のように表示されます。
土曜日、2000年の4月15日
date_gmt:関数はdate_localと同じですが、GMTに基づいて日付を返すことを除きます。例えば:
<! - #echo var = date_gmt->
last_modified:現在のドキュメントの最終更新時間を表示します。同様に、これはSSIの非常に実用的な機能です。次の簡単なテキストをHTMLドキュメントに追加している限り、ページに更新時間を動的に表示できます。
<! - #echo var = last_modified->
CGI環境変数
SSI環境変数に加えて、Echoコマンドは次のCGI環境変数を表示することもできます。
server_software:サーバーソフトウェアの名前とバージョンを表示します。例えば:
<! - #echo var = server_software->
server_name:サーバーのホスト名、DNSエイリアス、またはIPアドレスを表示します。例えば:
<! - #echo var = server_name->
server_protocol:HTTP/1.0など、クライアント要求で使用されるプロトコル名とバージョンを表示します。例えば:
<! - #echo var = server_protocol->
server_port:サーバーの応答ポートを表示します。例えば:
<! - #echo var = server_port->
request_method:get、head、postなど、クライアントのドキュメントリクエストメソッドを表示します。例えば:
<! - #echo var = request_method->
remote_host:リクエストメッセージを発行したクライアントホストの名前を表示します。
<! - #echo var = remote_host->
remote_addr:リクエスト情報を発行したクライアントのIPアドレスを表示します。
<! - #echo var = remote_addr->
auth_type:ユーザーIDの認証方法を表示します。
<! - #echo var = auth_type->
remote_user:保護されたページにアクセスするユーザーが使用するアカウント名を表示します。
<! - #echo var = remote_user->
4。FSIZE:指定されたファイルのサイズを表示します。 configコマンドのsizefmtパラメーターで出力形式をカスタマイズできます。
<! - #fsize file = index_working.html->
5。flastMod:指定されたファイルの最後の変更日を表示します。 configコマンドのtimefmtパラメーターを使用して出力形式を制御できます。
<! - #configtimefmt =%a、%bの%d、年%y->
<! - #flastMod file = file.html->
ここでは、FlastModパラメーターを使用して、ページ上のすべてのリンクページの更新日を表示できます。この方法は次のとおりです。
<! - #configtimefmt =%b%d、%y->
<a href =/directory/file.html> file </a>
<! - #flastmod virtual =/directory/file.html - >
<a href =/another_directory/another_file.html>別のファイル</a>
<! - #flastMod virtual =/another_directory/another_file.html->
結果は次のように表示されます。
2000年4月19日にファイル
別のファイル2000年1月8日
6。exec
execコマンドは、CGIスクリプトまたはシェルコマンドを実行できます。それを使用する方法は次のとおりです。
CMD: /bin /shを使用して、指定された文字列を実行します。 SSIがincludeNoexecオプションを使用すると、コマンドがブロックされます。
CGI:CGIスクリプトの実行に使用できます。たとえば、次の例では、サーバーCGI-BINディレクトリの下のcounter.plスクリプトプログラムを使用して、各ページにカウンターを配置します。
<! - #exec cgi =/cgi-bin/counter.pl->