SSI[伺服器端]

伺服器端嵌入:Server Side Include,是一種類似於ASP的基於伺服器的網頁製作技術。大多數(尤其是基於Unix平台)的WEB伺服器如Netscape Enterprise Server等均支持SSI命令。另外,在計算機硬體領域SSI是同步串列接口(Synchronous Serial Interface)的英文縮寫。

基本信息

原理

將內容傳送到瀏覽器之前,可以使用“伺服器端包含(SSI)”指令將文本、圖形或應用程式信息包含到網頁中。例如,可以使用SSI包含時間/日期戳、著作權聲明或供客戶填寫並返回的表單。對於在多個檔案中重複出現的文本或圖形,使用包含檔案是一種簡便的方法。將內容存入一個包含檔案中即可,而不必將內容輸入所有檔案。通過一個非常簡單的語句即可調用包含檔案,此語句指示Web伺服器將內容插入適當網頁。而且,使用包含檔案時,對內容的所有更改只需在一個地方就能完成。

因為包含SSI指令的檔案要求特殊處理,所以必須為所有SSI檔案賦予SSI檔案擴展名。默認擴展名是.stm、.shtm和.shtml

作用

之所以要扯到SSI,是因為shtml--server-parsedHTML的首字母縮略詞。包含有嵌入式伺服器端包含命令的HTML文本。在被傳送給瀏覽器之前,伺服器會對SHTML文檔進行完全地讀取、分析以及修改。

shtml和asp有一些相似,以shtml命名的檔案里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML檔案中寫入SSI指令,當客戶端訪問這些shtml檔案時,伺服器端會把這些SHTML檔案進行讀取和解釋,把SHTML檔案中包含的SSI指令解釋出來。

比如:你可以在SHTML檔案中用SSI指令引用其他的html檔案(#include),伺服器傳送給客戶端的檔案,是已經解釋的SHTML不會有SSI指令。它實現了HTML所沒有的功能,就是可以實現了動態的SHTML,可以說是HTML的一種進化吧。像新浪的新聞系統就是這樣的,新聞內容是固定的但它上面的廣告和選單等就是用#include引用進來的。

主要有以下幾種用用途:

1、顯示伺服器端環境變數<#echo>

2、將文本內容直接插入到文檔中<#include>

3、顯示WEB文檔相關信息<#flastmod#fsize>(如檔案製作日期/大小等)

4、直接執行伺服器上的各種程式<#exec>(如CGI或其他可執行程式)

5、設定SSI信息顯示格式<#config>;(如檔案製作日期/大小顯示方式)高級SSI<XSSI>;可設定變數使用if條件語句。

支持

Apache默認是不支持SSI的,需要我們更改httpd.conf來進行配置。我這裡以windows平台的Apache2.0.x為例:打開conf目錄下的httpd.conf檔案,搜尋“AddTypetext/html.shtml”,搜尋結果:

#AddTypetext/html.shtml

#AddOutputFilterINCLUDES.shtml

把這兩行前面的#去掉。

然後搜尋“OptionsIndexesFollowSymLinks”

在搜尋到的那一行後面添加“Includes”

即將該行改變為:

OptionsIndexesFollowSymLinksIncludes

保存httpd.conf,重起apache即可。

開啟shtml

打開檔案./include/config.inc.php<?php

//資料庫配置信息

define('DB_HOST','localhost');//資料庫伺服器主機地址

define('DB_USER','root');//資料庫帳號

define('DB_PW','root');//資料庫密碼

define('DB_NAME','phpcmsutf');//資料庫名

define('DB_PRE','phpcms_');//資料庫表前綴,同一資料庫安裝多套Phpcms時,請修改表前綴

define('DB_CHARSET','utf8');//資料庫字元集

define('DB_PCONNECT',0);//0或1,是否使用持久連線

define('DB_DATABASE','mysql');//資料庫類型

//網站路徑配置

define('PHPCMS_PATH','/cms/phpcms_utf/');//Phpcms框架訪問路徑,相對於域名

//shtml支持

將它:

define('SHTML',0);//是否支持shtml,需要伺服器支持,並且生成檔案擴展名為shtml

改成:

define('SHTML',1);//是否支持shtml,需要伺服器支持,並且生成檔案擴展名為shtml。

nginx

編輯nginx配置檔案vi/usr/local/nginx/conf/nginx.conf

加入如下代碼ssion;

ssi_silent_errorson;

ssi_typestext/shtml;

保存重啟nginx

使用

SSI是為WEB伺服器提供的一套命令,這些命令只要直接嵌入到HTML文檔的注釋內容之中即可。如:

<!--#includefile="info.htm"-->

就是一條SSI指令,其作用是將"info.htm"的內容拷貝到當前的頁面中,當訪問者來瀏覽時,會看到其它HTML文檔一樣顯示info.htm其中的內容。

其它的SSI指令使用形式基本同剛才的舉例差不多,可見SSI使用只是插入一點代碼而已,使用形式非常簡單。

當然,如果WEB伺服器不支持SSI,它就會只不過將它當作注釋信息,直接跳過其中的內容;瀏覽器也會忽略這些信息。

如何在我的WEB伺服器上配置SSI功能?

在一些WEB伺服器上(如IIS4.0/SAMBAR4.2),包含#include指令的檔案必須使用已被映射到SSI解釋程式的擴展名;否則,Web伺服器將不會處理該SSI指令;默認情況下,擴展名.stm、.shtm和.shtml被映射到解釋程式(Ssinc.dll)。

Apache則是根據你的設定情況而定,修改srm.conf如:

AddTypetext/x-server-parsed-html.shtml將只對.shtml擴展名的檔案解析SSI指令

AddTypetext/x-server-parsed-html.html將對所有HTML文檔解析SSI指令

NetscapeWEB伺服器直接使用AdministrationServer(管理伺服器)可打開SSI功能。

Website使用ServerAdmin程式中的Mapping標籤,擴展名添加內容類型為:wwwserver/html-ssi

Cern伺服器不支持SSI,可用SSI詐欺法,上下載一個PERL腳本,即可使你的CERN伺服器使用一些SSI指令。(不支持exec指令。)

相關詞條

相關搜尋

熱門詞條

聯絡我們