SHTML 簡潔なチュートリアル

SHTML 簡潔なチュートリアル
SHTMLとASPは似ています。SHTMLという名前のファイルでは、SSIの命令がASPの命令と同じように使用されます。SSI命令をSHTMLファイルに記述できます。クライアントがこれらのSHTMLファイルにアクセスすると、
サーバーはこれらの SHTML ファイルを読み取って解釈し、SHTML ファイルに含まれる SSI 命令を解釈します。たとえば、SHTML ファイル内の SSI 命令を使用して他の HTML ファイルを参照できます (#include)。サーバーからクライアントに送信されるファイルは、SSI 命令のない解釈された SHTML です。 HTML にはない機能、つまり HTML の進化形ともいえる動的な SHTML を実現できます。 Sina のニュースシステムはこんな感じです。ニュースの内容は固定ですが、その上の広告やメニューは #include を使って参照しています。
現在、主に以下のような用途があります。
1. サーバー側の環境変数を表示する <#echo>
2. テキストコンテンツをドキュメントに直接挿入する <#include>
3. WEB ドキュメント関連情報を表示します <#flastmod><#fsize> (ファイル作成日/サイズなど)
4. サーバー上のさまざまなプログラムを直接実行する <#exec> (CGI やその他の実行可能プログラムなど)
5. SSI情報の表示形式を設定する <#config> (ファイル作成日/サイズの表示方法など)
高度な SSI <XSSI> は、if 条件文を使用して変数を設定できます。

SSIの使用
SSI は、WEB サーバー向けに提供されるコマンドのセットです。これらのコマンドは、HTML ドキュメントのコメント コンテンツに直接埋め込むことができます。のように:
<#include ファイル="info.htm"-->
これは、"info.htm" の内容を現在のページにコピーする SSI 命令です。訪問者がこのページを閲覧すると、他の HTML ドキュメントと同様に info.htm の内容が表示されます。
その他の SSI 命令の使用方法は、基本的に先ほどの例と同じです。SSI の使用方法は、少しコードを挿入するだけであり、使用方法は非常に簡単であることがわかります。
もちろん、Web サーバーが SSI をサポートしていない場合は、単にコメント情報として扱われ、コンテンツはスキップされます。ブラウザーもこの情報を無視します。

Web サーバーで SSI 機能を構成するにはどうすればよいですか?
一部の WEB サーバー (IIS 4.0/SAMBAR 4.2 など) では、#include ディレクティブを含むファイルは、SSI インタープリターにマップされた拡張子を使用する必要があります。そうしないと、Web サーバーは SSI ディレクティブを処理しません。デフォルトでは、拡張子 .stm、.shtm、および .shtml がインタープリター (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 サーバーは、管理サーバーを使用して SSI 機能を直接有効にすることができます。
ウェブサイトはサーバー管理プログラムのマッピングタグを使用し、拡張機能はコンテンツタイプを追加します: wwwserver/html-ssi
CERN サーバーは SSI をサポートしていません。SSI 詐欺の方法を使用して、http://sw.cse.bris.ac.uk/WebTools/fakessi.html から PERL スクリプトをダウンロードし、CERN サーバーで SSI 命令を使用するようにすることができます。 (exec ディレクティブはサポートされていません。)

SSI命令の基本フォーマット
SSI 命令の基本形式は次のとおりです。
プログラムコード:

<!-– コマンド名="コマンドパラメータ">
<!-– コマンド名="コマンドパラメータ">
プログラムコードなど:

<#include ファイル="info.htm"-->
<#include ファイル="info.htm"-->
例:
1. <!-- --> は HTML 構文のコメントです。WEB サーバーが SSI をサポートしていない場合、この情報は無視されます。
2. #include は SSI ディレクティブの 1 つです。
3. file は include のパラメータであり、info.htm はパラメータ値であり、この命令に含まれるドキュメントの名前を参照します。

知らせ:

1. <!-- と # 記号の間にはスペースはなく、SSI コマンドとパラメータの間にのみスペースがあります。
2.上記の句読点 = "" は省略できません。
3. SSI ディレクティブは大文字と小文字を区別するため、引数は小文字で入力する必要があります。

SSI命令の詳細な説明

#echo デモ関数:
ページに環境変数を挿入します。
文法:
プログラムコード:

<!--#echo var="変数名"-->
<!--#echo var="変数名"-->


このドキュメントの名前: プログラムコード:

<!--#echo var="ドキュメント名"-->
<!--#echo var="ドキュメント名"-->
現在の時刻: プログラムコード:

<!--#echo var="DATE_LOCAL"-->
<!--#echo var="DATE_LOCAL"-->
あなたの IP アドレスはプログラム コードです:

<!--#echo var="REMOTE_ADDR"-->
<!--#echo var="REMOTE_ADDR"-->

#include デモ関数:
テキスト ファイルの内容をドキュメント ページに直接挿入します。
文法:
プログラムコード:

<#include file="ファイル名"-->
<#include virtual="ファイル名"-->
<#include file="ファイル名"-->
<#include virtual="ファイル名"-->
ファイル ファイル名は、#include ディレクティブを使用するドキュメントが配置されているディレクトリを基準とした相対パスです。インクルード ファイルは同じディレクトリまたはそのサブディレクトリに存在できますが、前のディレクトリには存在できません。たとえば、現在のディレクトリ内の nav_head.htm ドキュメントを意味する場合は、file="nav_head.htm" となります。
仮想ファイル名は、Web サイト上の仮想ディレクトリへの完全なパスです。たとえば、サーバーのドキュメントルートディレクトリの下のhoyiディレクトリにあるnav_head.htmファイルを意味する場合は、file="/hoyi/nav_head.htm"となります。
パラメータ:
ファイルは、このドキュメントに対するインクルードファイルの場所を指定します。
virtual は、サーバーのドキュメント ルートからの相対的な場所を指定します。注:
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="ファイル名"-->
<!--#fsize file="ファイル名"-->
<!--#flastmod file="ファイル名"-->
<!--#fsize file="ファイル名"-->
パラメータ:
ファイルは、このドキュメントを基準としたインクルードファイルの場所を指定します。たとえば、info.txt は現在のディレクトリにある info.txt ドキュメントを意味します。
virtual は、/hoyi/info.txt などのサーバー ドキュメント ルート ディレクトリからの相対的な場所を指定します。注:
ファイル名には拡張子が必要です。
例:
プログラムコード:

<!--#flastmod ファイル="news.htm"-->
<!--#flastmod ファイル="news.htm"-->
現在のディレクトリにある news.htm ファイルの最終更新日を現在のページのプログラム コードに挿入します。

<!--#fsize ファイル="news.htm"-->
<!--#fsize ファイル="news.htm"-->
現在のディレクトリにあるnews.htmのファイルサイズを現在のページに入力します
#exec デモ関数:
外部プログラムの出力をページに挿入します。 cmd 引数または cgi 引数のどちらが使用されているかに応じて、CGI プログラムまたは通常のアプリケーションに挿入できます。
文法:
プログラムコード:

<!--#exec cmd="ファイル名"-->
<!--#exec cgi="ファイル名"-->
<!--#exec cmd="ファイル名"-->
<!--#exec cgi="ファイル名"-->
パラメータ:
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 の「Options Includes ExecCGI」行を削除します。
. IIS で #exec コマンドを無効にするには、SSIExecDisable メタベースを変更します。
#設定
目的: クライアント ブラウザーに返されるエラー メッセージ、日付、およびファイル サイズの形式を指定します。
文法:
プログラムコード:

<!--#configerrmsg="カスタムエラーメッセージ"-->
<!--#configsizefmt="表示単位"-->
<!--#configtimefmt="表示形式"-->
<!--#configerrmsg="カスタムエラーメッセージ"-->
<!--#configsizefmt="表示単位"-->
<!--#configtimefmt="表示形式"-->
パラメータ:
errmsg SSI 実行エラー メッセージを任意の方法でカスタマイズします。
sizefmt ファイルサイズ表示モード。デフォルトはバイト ("bytes") ですが、キロバイト ("abbrev") に変更できます。
timefmt 時間表示モード。最も柔軟な構成属性です。
例: 存在しないファイルのサイズを表示するプログラムコード:

<!--#configerrmsg="サーバー実行エラーです。管理者 [email protected] にご連絡ください。ありがとうございます!"-->
<!--#fsize file="存在しないファイル.htm"-->
<!--#configerrmsg="サーバー実行エラーです。管理者 [email protected] にご連絡ください。ありがとうございます!"-->
<!--#fsize file="存在しないファイル.htm"-->
ファイルサイズをキロバイトで表示



プログラムコード:




<!--#configsizefmt="abbrev"-->
<!--#fsizefile="news.htm"-->
<!--#configsizefmt="abbrev"-->
<!--#fsizefile="news.htm"-->
特定の時間形式で時間プログラムコードを表示します。

<!--#configtimefmt="%Y 年/%m 月 %d 日週 %W 北京時間 %H:%M:%s、%Y 年が %j 日経過しました。今日は %Y 年 %U 週です"-->
<!--#echo var="DATE_LOCAL"--> 今日の曜日、月、タイムゾーンを表示します
<!--#configtimefmt="今日 %A、%B、サーバーのタイムゾーンは %z です、はい"-->
<!--#echo var="DATE_LOCAL"-->
<!--#configtimefmt="%Y 年/%m 月 %d 日週 %W 北京時間 %H:%M:%s、%Y 年が %j 日経過しました。今日は %Y 年 %U 週です"-->
<!--#echo var="DATE_LOCAL"--> 今日の曜日、月、タイムゾーンを表示します
<!--#configtimefmt="今日 %A、%B、サーバーのタイムゾーンは %z です、はい"-->
<!--#echo var="DATE_LOCAL"-->

スリーエスアイ
XSSI (Extended SSI) は、Apache 1.2 以降の mod-include モジュールに組み込まれた高度な SSI 命令のセットです。
利用可能なコマンドは次のとおりです。
#printenv
#セット
#もし
#printenv
機能: WEB サーバー環境に現在存在するすべての環境変数を表示します。
構文: プログラムコード:

<!--#printenv-->
<!--#printenv-->
パラメータ: なし 例:
プログラムコード:

<!--#printenv-->
<!--#printenv-->

#セット
機能: 後続の if ステートメントで使用するために変数に値を割り当てることができます。
構文: プログラムコード:

<!--#set var="変数名" value="変数の値"-->
<!--#set var="変数名" value="変数の値"-->
パラメータ: なし 例: プログラムコード:

<!--#set var="color" value="red"-->
<!--#set var="color" value="red"-->

#もし
目的: if ステートメントを使用するときに、計算要件に基づいて表示されるデータを変更できるページを作成します。
構文: プログラムコード:

<!--#if expr="$variable name="変数値 A""-->
コンテンツを表示
<!--#elif expr="$variable name="変数値 B""-->
コンテンツを表示
<!--# それ以外の場合 -->
コンテンツを表示
<!--#endif"-->
<!--#if expr="$variable name="変数値 A""-->
コンテンツを表示
<!--#elif expr="$variable name="変数値 B""-->
コンテンツを表示
<!--# それ以外の場合 -->
コンテンツを表示
<!--#endif"-->
例:
プログラムコード:

<!--#if expr="$SERVER_NAME="http://www.31896.net/""-->
サーバー セキュリティ ディスカッション エリア http://www.31896.net/ へようこそ。
<!--#elif expr="$SERVER_NAME="http://www.fineacer.org/"" -->
Fineacer コンピュータ ネットワーク セキュリティ オンライン (http://www.fineacer.org/) へようこそ。
<!--# それ以外の場合 -->
サーバー セキュリティ フォーラムへようこそ!
<!--#endif"-->
<!--#if expr="$SERVER_NAME="http://www.31896.net/""-->
サーバー セキュリティ ディスカッション エリア http://www.31896.net/ へようこそ。
<!--#elif expr="$SERVER_NAME="http://www.fineacer.org/"" -->
Fineacer コンピュータ ネットワーク セキュリティ オンライン (http://www.fineacer.org/) へようこそ。
<!--# それ以外の場合 -->
サーバー セキュリティ フォーラムへようこそ!
<!--#endif"-->
注: 前のディレクティブで使用されたバックスラッシュは、式の終了として解釈されないように、内部引用符を置き換えるために使用されます。省略できません。


1. 設定コマンド

Config コマンドは主に SSI のデフォルト設定を変更するために使用されます。で:

Errmsg: デフォルトのエラー メッセージを設定します。ユーザーが設定したエラー メッセージを正常に返すには、HTML ファイル内の他の SSI コマンドの前に Errmsg パラメータを配置する必要があります。そうしないと、クライアントはユーザーが設定したカスタム メッセージではなく、デフォルトのエラー メッセージのみを表示できます。

<!--#configerrmsg="エラー! [email protected] にメールしてください -->

Timefmt: 日付と時刻に使用する形式を定義します。 echo コマンドの前に timefmt パラメータを使用する必要があります。

<!--#configtimefmt="%A, %B %d, %Y"-->
<!--#echo var="最終変更日" -->



結果は次のとおりです。

2000年4月12日水曜日

おそらく、ユーザーは上記の例で使用されている %A %B %d に馴染みがないかもしれません。以下に、SSI でよく使用される日付と時刻の形式の一部を表の形式でまとめます。

Sizefmt: ファイル サイズをバイト、キロバイト、メガバイトのいずれで表すかを決定します。バイトを使用する場合、値は「バイト」になります。キロバイトとメガバイトの略語を使用できます。同様に、sizefmt パラメータは、使用する fsize コマンドの前に配置する必要があります。

<!--#configsizefmt="バイト" -->
<!--#fsize ファイル="index.html" -->

2. コマンドを含める

Include コマンドを使用すると、現在解析中のドキュメントに他のドキュメントのテキストまたは画像を挿入できます。これが SSI 全体のキーとなります。 Include コマンドを使用すると、1 つのファイルを変更するだけでサイト全体を即座に更新できます。

Include コマンドには 2 つの異なるパラメーターがあります。

仮想: サーバー上のドキュメントへの仮想パスを指定します。例えば:

<#include virtual="/includes/header.html" -->

ファイル: 現在のディレクトリへの相対パスを指定します。「../」または絶対パスは使用できません。例えば:

<#include ファイル="header.html" -->

これには、各ディレクトリに header.html ファイルが含まれている必要があります。

3. エコーコマンド

echo コマンドは次の環境変数を表示できます。

DOCUMENT_NAME: 現在のドキュメントの名前を表示します。

<!--#echo var="ドキュメント名" -->

結果は次のとおりです。

インデックス.html

DOCUMENT_URI: 現在のドキュメントの仮想パスを表示します。例えば:

<!--#echo var="DOCUMENT_URI" -->

結果は次のとおりです。

/あなたのディレクトリ/あなたのファイル名.html

ウェブサイトが成長し続けると、URL がどんどん長くなり、間違いなく頭痛の種になります。 SSI を使用すれば、これらすべてが解決されます。ウェブサイトのドメイン名と SSI コマンドを組み合わせて完全な URL を表示できるため、次のようになります。

http://yourdomain%3c!--/#echo var="& ... uot; -->

QUERY_STRING_UNESCAPED: エスケープ処理なしでクライアントから送信されたクエリ文字列を表示します。すべての特殊文字の前にエスケープ文字 "" が付きます。例えば:

<!--#echo var="QUERY_STRING_UNESCAPED" -->

DATE_LOCAL: サーバーの設定されたタイムゾーンで日付と時刻を表示します。ユーザーは、config コマンドの timefmt パラメータを組み合わせることで出力情報をカスタマイズできます。例えば:

<!--#configtimefmt="%A、%Y 年 %B 月 %d 日" -->
<!--#echo var="DATE_LOCAL" -->

結果は次のとおりです。

2000年4月15日土曜日

DATE_GMT: 返される日付がグリニッジ標準時に基づく点を除いて、DATE_LOCAL と同じ機能です。例えば:

<!--#echo var="DATE_GMT" -->

LAST_MODIFIED: 現在のドキュメントの最終更新時刻を表示します。同様に、これは SSI で非常に実用的な機能です。HTML ドキュメントに次の簡単なテキスト行を追加するだけで、ページに更新時刻が動的に表示されます。

<!--#echo var="最終変更日" -->

CGI 環境変数

SSI 環境変数に加えて、echo コマンドは次の CGI 環境変数も表示できます。

SERVER_SOFTWARE: サーバー ソフトウェアの名前とバージョンを表示します。例えば:
<!--#echo var="SERVER_SOFTWARE" -->
SERVER_NAME: サーバーのホスト名、DNS エイリアス、または IP アドレスを表示します。例えば:
<!--#echo var="サーバー名" -->
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: ユーザーの認証方法を表示します。
<!--#echo var="AUTH_TYPE" -->
REMOTE_USER: 保護されたページにアクセスするユーザーが使用するアカウント名を表示します。
<!--#echo var="REMOTE_USER" -->



4. Fsize: 指定したファイルのサイズを表示します。config コマンドの sizefmt パラメータを組み合わせることで出力形式をカスタマイズできます。




<!--#fsize ファイル="index_working.html" -->

5. Flastmod: 指定されたファイルの最終変更日を表示します。出力形式は、config コマンドの timefmt パラメータを組み合わせて制御できます。

<!--#configtimefmt="%A、%Y 年 %B 月 %d 日" -->
<!--#flastmod ファイル="file.html" -->

ここでは、flastmod パラメータを使用して、ページ上のすべてのリンクされたページの更新日を表示できます。方法は次のとおりです。

<!--#configtimefmt=" %B %d, %Y" -->
<A HREF="/directory/file.html">ファイル</A>
<!--#flastmod virtual="/directory/file.html" -->
<A HREF="/another_directory/another_file.html">別のファイル</A>
<!--#flastmod virtual="/別のディレクトリ/別のファイル.html" -->
結果は次のとおりです。
ファイル 2000年4月19日
もう一つのファイル 2000年1月8日

6. 実行

Exec コマンドは、CGI スクリプトまたはシェル コマンドを実行できます。使い方は次のとおりです:

Cmd: 指定された文字列を実行するには、/bin/sh を使用します。 SSI で IncludesNOEXEC オプションを使用すると、このコマンドはブロックされます。

Cgi: CGI スクリプトを実行するために使用できます。たとえば、次の例では、サーバーの cgi-bin ディレクトリにある counter.pl スクリプトを使用して、各ページにカウンターを配置します。

<!--#exec cgi="/cgi-bin/counter.pl" -->

<<:  Apache ストレステストツールのインストールと使用

>>:  MySQL のロック待機とデッドロック問題の分析

推薦する

Linux で jar パッケージを起動してバックグラウンドで実行する方法

jar パッケージを実行する Linux コマンドは次のとおりです。方法1: java -jar s...

CSS3 でテキストの点滅効果を実現する 3 つの方法 サンプルコード

1. 透明度を変更してテキストを徐々に点滅させると、次のような効果が得られます。 <!DOCT...

Win 8 以降での最新の MySQL バージョン 5.7.17 (64 ビット ZIP グリーン バージョン) のインストールと展開のチュートリアル

まず、ブロガーはコミュニティ バージョンをプレイしていますが、学習とテストにはこれで十分です。 Bl...

select @@session.tx_read_only が DB に大量に出現するのはなぜですか?

問題を見つける上位の SQL ステートメントを取得すると、DB が大量のselect @@sessi...

HTML ドラッグ アンド ドロップ機能の実装コード

Vueベースこの機能の核となるアイデアは、JavaScript コードを通じてページ上のノードの左余...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...

CSS で QR コードスキャンボックスを実装するためのサンプルコード

カメラを開くと通常はスキャンボックスが表示されますが、静的なQRコードではフォーカスを合わせたりスキ...

Linuxでホスト名を変更する方法

1. 現在のホスト名を表示する [root@fangjian ~]# ホスト名ctl 静的ホスト名:...

bash を使って日付をカウントダウンする方法

重要なイベントまであと何日あるか知りたいですか? Linux bash と date コマンドが役に...

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...

Linuxカーネルとデバイスツリーのコンパイルと書き込みを分析する

目次1. 材料を準備する2. Linuxカーネルファイルをダウンロードする3. コンパイル4. TF...

HTML と CSS の基礎 (必読)

(1) HTML: ハイパーテキストマークアップ言語。主に「ヘッダー」と「ボディ」の2つの部分で構...

Docker を使用して静的 Web サイト アプリケーションを作成する (複数の方法)

静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...

Vueはショッピングカート決済機能をシミュレートします

この記事では、ショッピングカート決済機能を実現するためのVueの具体的なコードを例として紹介します。...