SSI指令教程


一:概述

SSI:服務器端嵌入或者叫服務器端包含,是Server Side Include的簡寫。SSI技術通過在文檔中加入SSI指令,讓服務器端在輸出文檔之前解析SSI指令,並把解析完的結果和文檔一同輸出給客戶端。

 

SSI的指令格式為:<!-- #directive parameter="value" -->

其中,directive是指令名,parameter指令參數,value指令參數值

可以看到,就是html注釋,事實上,Web服務器開啟了SSI,並且頁面包含可以解析的指令,那么Web服務器就解析這個指令。沒開啟器SSI或者開啟了SSI,但是不是可以解析的指令,那么都當做注釋。

注意的是,“#”要和directive連在一起,中間不能含有空格

 

SSI包含的指令有

config:修改 SSI 的默認設置

echo:顯示環境變量

exec:執行 CGI 腳本

flastmod :顯示指定文件的最后修改日期

fsize:顯示指定文件的大小

include:把其它文檔插入到當前被解析的文檔中

 

二:准備工作

新建一個站點,站點路徑為C:\inetpub\wwwroot\ssitutorial,網站名稱為localhost8585,端口為8585

image

在站點目錄放一個html文件,名為index.html,首先沒開啟SSI時,測試使用SSI指令是否有效果

html文件內容如下

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>

<body>
   <p>Date = <!--#echo var = "date_local" --></p> 
</body>

</html>

使用了echo指令,顯示當前時間

瀏覽http://localhost:8585/index.html,查看效果

image

可以看到”Date=“后面並沒顯示當前時間,說明沒開啟SSI,指令只是作為注釋

 

下面,開啟SSI

在IIS選中站點localhost8585,選擇”處理程序映射“

image

進入”處理程序映射“后,選擇操作中的”添加模塊映射“

image

彈出”添加模塊映射“窗口,在窗口指定解析html文件

image

點確定后,可以看到,在”處理程序映射“多了一項,同時,在站點目錄下,也就是C:\inetpub\wwwroot\ssitutorial生成了一個web.config文件

”處理程序映射“

image

web.config文件

image

web.config的內容如下

image

設置后之后,測試下SSI是否成功,刷新http://localhost:8585/index.html,查看效果

image

可以看到,”Date=”后面顯示日期,說明SSI指令生效了

 

三:SSI各個指令的用法

3.1 config:修改 SSI 的默認設置,參數:

errmsg:自定義的SSI執行錯誤信息;

timefmt:定義日期和時間的格式;

sizefmt:決定文件大小是以字節、千字節為單位表示

 

errmsg參數:自定義的SSI執行錯誤信息,必須放在其它指令前,才能顯示自定義的錯誤信息

例如:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>

<body>

<!-- #config errmsg="這是自定義錯誤信息"-->
<p>File Size = <!--#fsize file="filename.txt"--> bytes</p>

</body>

</html>

這里的filename.txt並不存在,所以執行會出錯,那么就顯示自定義錯誤信息了,如下圖

image

timefmt參數:定義日期和時間的格式

<!-- #config timefmt="%y年%m月%d日"-->
<p>Date = <!--#echo var = "date_local" --></p>

image

sizefmt:決定文件大小是以字節(bytes)、千字節(abbrev)為單位表示

比如,有一個文件a.exe,大小為48,594,944字節,使用不同單位

<!--#config sizefmt="bytes"-->
<p><!--#fsize file="a.exe"--> bytes</p>

<!--#config sizefmt="abbrev"-->
<p><!--#fsize file="a.exe"--> kb</p>

顯示如下

image

算一下,結果是正確的

 

3.2 echo:顯示環境變量

<p>請求方式= <!-- #echo var = "HTTP_METHOD" --></p>

這里顯示請求方式

image

完整的環境變量,可以在點這里查詢

 

3.3 exec:執行 CGI 腳本

首先需要得到CGI程序,用控制台做一個CGI程序,名為CgiDemo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace CgiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Content-Type: text/html\n\n");
            Console.Write("<p>Path:" +System.Environment.GetEnvironmentVariable("PATH_TRANSLATED") +"</p>");          
        }  // End of Main().
    }
}

輸出CGI程序的服務器路徑

然后,使用exec執行CGI

<pre><!--#exec cgi = "/cgi-bin/cgidemo.exe" --></pre>

接着訪問上面html的地址http://localhost:8585/index.html,出現下面這種情況

image

說明服務器還要做一些配置。首先,在站點localhost8585—>處理程序映射—>添加模塊映射

配置CGI模塊

image

再然后,在 服務器 (不是站點)下找到”ISAPI和CGI限制”

image

添加剛才那個CGI

image

再次訪問http://localhost:8585/index.html,得到如下結果

image

說明成功執行CGI程序

 

3.4 flastmod :顯示指定文件的最后修改日期

<!-- #config timefmt="%y年%m月%d日"-->
<pre> <!-- #flastmod  file = "a.exe" --></pre>

得到如下結果

image

a.exe的信息如下

image

說明是正確的

 

3.5 fsize:顯示指定文件的大小

<!--#config sizefmt="bytes"-->
<p><!--#fsize file="a.exe"--> bytes</p>

得到如下結果

image

a.exe大小信息如下

image

說明也是正確的

 

 

3.6 include:把其它文檔插入到當前被解析的文檔中

在index.html所在目錄建一個inc.htm文件,文件內容如下

<h2>這是include文件內容</h2>

在index.html包含inc.html

<body>

<!--#include file="inc.htm"-->

</body>

訪問http://localhost:8585/index.html,得到如下結果

image

可見,inc.htm里的內容被包含進來

另外,如果被包含文件中含有SSI指令,也會解析SSI指令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM