2.Include命令
Include命令可以把其它文檔中的文字或圖片插入到當(dāng)前被解析的文檔中,是整個(gè)SSI的關(guān)鍵所在。通過Include命令只需要改動(dòng)一個(gè)文件就可以瞬間更新整個(gè)站點(diǎn)!
Include命令具有兩個(gè)不同的參數(shù),如果使用錯(cuò)誤的參數(shù)更新站點(diǎn)的話,不僅達(dá)不到初衷,反而會(huì)得到一大堆的錯(cuò)誤信息。
Virtual:給出到服務(wù)器端某個(gè)文檔的虛擬路徑。例如:
<!--#include virtual="/includes/header.html" -->
為了更加合理的組織站點(diǎn)的內(nèi)容,用戶可以在根目錄下創(chuàng)建includes子目錄來存放所有的包含文件。Virtual參數(shù)可以通知服務(wù)器所要包含的是一個(gè)虛擬文件,即文件和當(dāng)前被解析的文檔不是位于同一個(gè)目錄,而是存放在其它目錄中。服務(wù)器會(huì)根據(jù)該參數(shù)的值找到根目錄下的includes子目錄。使用這種方法,用戶可以把所有HTML文檔包含的文件放在一個(gè)目錄中,而根據(jù)相互之間的關(guān)系把不同的頁面保存在不同的目錄或子目錄中。無論服務(wù)器解析哪一個(gè)文檔都可以找到所包含的文件,不會(huì)產(chǎn)生任何錯(cuò)誤。
不過這里有一個(gè)小問題需要解決。一般我們都會(huì)在頁面中加入一些TITLE和META標(biāo)簽,如果我們規(guī)定所有的頁面都調(diào)用相同的頁眉文件的話,就顯得很不靈活。用戶碰到這樣的問題時(shí),可以使用兩個(gè)包含文件,一個(gè)設(shè)置TITLE標(biāo)簽前的內(nèi)容,另一個(gè)設(shè)置META標(biāo)簽后的部分,而在兩個(gè)包含文件之間則可以添加任何定制內(nèi)容。例如:
<!--#include virtual="/includes/header1.html" --> <TITLE>Your Page Title</TITLE> <LINK rel = STYLESHEET href = "http://domain.com/styles/my.css" Type = "text/css" > <META NAME = "Description" CONTENT = " Description of page"> <META NAME = "Keywords" CONTENT = "keywords for page" > <!--#include virtual="/includes/header2.html" -->
這里放置頁面內(nèi)容
<!--#include virtual="/includes/footer.html" -->
從上我們可以看出通過在頁面中包含頁眉和頁腳可以大大減少站點(diǎn)更新的工作量。但是如果我們希望動(dòng)態(tài)顯示一些內(nèi)容,例如頁面的最后更新時(shí)間等該怎么辦呢?沒問題,我們可以把包含文件使用.html后綴保存,這樣就可以在包含文件中調(diào)用其它的包含文件。
File:給出到當(dāng)前目錄的相對(duì)路徑,其中不能使用“../”,也不能使用絕對(duì)路徑。例如:
<!--#include file="header.html" -->
這就要求每一個(gè)目錄中都包含一個(gè)header.html文件。當(dāng)然,采用這樣的方法并不比更新每一個(gè)頁面簡單多少,但是如果用戶只更新一、兩個(gè)文件的話還是很方便的。例如,如果我們不希望讓一個(gè)對(duì)HTML不熟悉的人直接改動(dòng)網(wǎng)站中的新聞頁面的話,可以只讓他更新一個(gè)單獨(dú)的文本文件,然后再把該文件包含到HMTL文檔中,這樣即不會(huì)破壞原頁面,同時(shí)又更新了內(nèi)容,兩全其美。
3.Echo:
Echo命令可以顯示以下各環(huán)境變量:
DOCUMENT_NAME:顯示當(dāng)前文檔的名稱。
<!--#echo var="DOCUMENT_NAME" -->
顯示結(jié)果為:
index.html
DOCUMENT_URI:顯示當(dāng)前文檔的虛擬路徑。例如:
<!--#echo var="DOCUMENT_URI" -->
顯示結(jié)果為:
/YourDirectory/YourFilename.html
隨著網(wǎng)站的不斷發(fā)展,那些越來越長的URL地址肯定會(huì)讓人頭疼。如果使用SSI,一切就會(huì)迎刃而解。因?yàn)槲覀兛梢园丫W(wǎng)站的域名和SSI命令結(jié)合在一起顯示完整的URL,即:
http://YourDomain<!--#echo var="DOCUMENT_URI" -->
QUERY_STRING_UNESCAPED:顯示未經(jīng)轉(zhuǎn)義處理的由客戶端發(fā)送的查詢字串,其中所有的特殊字符前面都有轉(zhuǎn)義符“\”。例如:
<!--#echo var="QUERY_STRING_UNESCAPED" -->
DATE_LOCAL:顯示服務(wù)器設(shè)定時(shí)區(qū)的日期和時(shí)間。用戶可以結(jié)合config命令的timefmt參數(shù),定制輸出信息。例如:
<!--#config timefmt="%A, the %d of %B, in the year %Y" --> <!--#echo var="DATE_LOCAL" -->
顯示結(jié)果為:
Saturday, the 15 of April, in the year 2000
DATE_GMT:功能與DATE_LOCAL一樣,只不過返回的是以格林尼治標(biāo)準(zhǔn)時(shí)間為基準(zhǔn)的日期。例如:
<!--#echo var="DATE_GMT" -->
LAST_MODIFIED:顯示當(dāng)前文檔的最后更新時(shí)間。同樣,這是SSI中非常實(shí)用的一個(gè)功能,只要在HTML文檔中加入以下這行簡單的文字,就可以在頁面上動(dòng)態(tài)的顯示更新時(shí)間。
<!--#echo var="LAST_MODIFIED" -->
CGI環(huán)境變量
除了SSI環(huán)境變量之外,echo命令還可以顯示以下CGI環(huán)境變量:
SERVER_SOFTWARE:顯示服務(wù)器軟件的名稱和版本。例如:
<!--#echo var="SERVER_SOFTWARE" -->
SERVER_NAME: 顯示服務(wù)器的主機(jī)名稱,DNS別名或IP地址。例如:
<!--#echo var="SERVER_NAME" -->
SERVER_PROTOCOL:顯示客戶端請(qǐng)求所使用的協(xié)議名稱和版本,如HTTP/1.0。例如:
<!--#echo var="SERVER_PROTOCOL" -->
SERVER_PORT:顯示服務(wù)器的響應(yīng)端口。例如:
<!--#echo var="SERVER_PORT" -->
REQUEST_METHOD:顯示客戶端的文檔請(qǐng)求方法,包括GET, HEAD, 和POST。例如:
<!--#echo var="REQUEST_METHOD" -->
REMOTE_HOST:顯示發(fā)出請(qǐng)求信息的客戶端主機(jī)名稱。
<!--#echo var="REMOTE_HOST" -->
REMOTE_ADDR:顯示發(fā)出請(qǐng)求信息的客戶端IP地址。
<!--#echo var="REMOTE_ADDR" -->
AUTH_TYPE:顯示用戶身份的驗(yàn)證方法。
<!--#echo var="AUTH_TYPE" -->
REMOTE_USER:顯示訪問受保護(hù)頁面的用戶所使用的帳號(hào)名稱。
<!--#echo var="REMOTE_USER" -->
4.Fsize:顯示指定文件的大小,可以結(jié)合config命令的sizefmt參數(shù)定制輸出格式。
<!--#fsize file="index_working.html" -->
5.Flastmod:顯示指定文件的最后修改日期,可以結(jié)合config 命令的timefmt參數(shù)控制輸出格式。
<!--#config timefmt="%A, the %d of %B, in the year %Y" --> <!--#flastmod file="file.html" -->
這里,我們可以利用flastmod參數(shù)顯示出一個(gè)頁面上所有鏈接頁面的更新日期。方法如下:
<!--#config timefmt=" %B %d, %Y" --> <A HREF="/directory/file.html">File</A> <!--#flastmod virtual="/directory/file.html" --> <A HREF="/another_directory/another_file.html">Another File</A> <!--#flastmod virtual="/another_directory/another_file.html" -->
顯示結(jié)果為:
File April 19, 2000 Another File January 08, 2000
也許有的讀者會(huì)認(rèn)為兩個(gè)鏈接就這么復(fù)雜,一點(diǎn)也不方便。其實(shí),如果頁面上有20個(gè)或者更多的鏈接,而且每個(gè)鏈接都定期更新的話,就可以看出使用flastmod顯示修改日期的作用。
6.Exec
Exec命令可以執(zhí)行CGI腳本或者shell命令。使用方法如下:
Cmd:使用/bin/sh執(zhí)行指定的字串。如果SSI使用了IncludesNOEXEC選項(xiàng),則該命令將被屏蔽。
Cgi:可以用來執(zhí)行CGI腳本。例如,下面這個(gè)例子中使用服務(wù)端cgi-bin目錄下的counter.pl腳本程序在每個(gè)頁面放置一個(gè)計(jì)數(shù)器:
<!--#exec cgi="/cgi-bin/counter.pl" -->
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!