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