欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

SSI使用詳解_負(fù)載集群教程

編輯Tag賺U幣
教程Tag:SSI添加

您是否曾或正在為如何能夠在最短的時間內(nèi)完成對一個包含上千個頁面的網(wǎng)站的修改而苦惱?那么能夠看一下本文的介紹,或許能夠?qū)δ兴鶐椭?/p>


什么是ssi?


  ssi是英文server side includes的縮寫,翻譯成中文就是服務(wù)器端包含的意思。從技術(shù)角度上說,ssi就是html文檔中,能夠通過注釋行調(diào)用的命令或指針。ssi 具備強大的功能,只要使用一條簡單的ssi 命令就能夠?qū)崿F(xiàn)整個網(wǎng)站的內(nèi)容更新,動態(tài)顯示時間和日期,連同執(zhí)行shell和cgi腳本程式等復(fù)雜的功能。ssi 能夠稱得上是那些資金短缺、時間緊張、工作量大的網(wǎng)站研發(fā)人員的最好幫手。


  ssi最初在ncsa服務(wù)器平臺上推出,在apache服務(wù)器中得到擴(kuò)展和加強,現(xiàn)在已能夠在幾乎任何的服務(wù)器上運行。本文將主要結(jié)合apache服務(wù)器介紹ssi的使用方法。

 

如何啟動ssi?


  在apache服務(wù)器下,能夠通過直接編輯服務(wù)器配置文檔或在需要使用ssi的目錄中創(chuàng)建.htaccess文檔啟動ssi。具體來說,過程如下:

 

1.服務(wù)器配置文檔


  假如用戶具備對服務(wù)器配置文檔的訪問權(quán)限,能夠通過編輯文檔access.conf和srm.conf啟動ssi。


  首先使用telnet遠(yuǎn)程登錄服務(wù)器,找到配置文檔的存放目錄。一般來說,apache服務(wù)器的配置文檔都被保存在"/usr/local/etc/httpd/conf"目錄下。使用任何一種文字編輯器打開文檔srm.conf,找到以下幾行:


# if you want to use server side includes, or cgi outside

# scriptaliased directories, uncomment the following lines.

#addtype text/x-server-parsed-html .shtml


#addtype application/x-httpd-cgi .cgi


  用戶的配置文檔中可能沒有上述的注釋指令行,但是只要找到以addtype開頭的兩行并且去掉每一行最前面的"#"符號即可。


  保存所做的修改,然后再打開文檔access.conf。用戶需要在文檔中找到配置documentroot(根文檔)的部分。一般來說該段文本如下,但是不排除<directory>和</directory>標(biāo)簽之間還包含其他配置內(nèi)容。


# this should be changed to whatever you set documentroot to.

<directory /usr/local/etc/httpd/htdocs>

# this may also be "none", "all", or any combination of "indexes",

# "includes", or "followsymlinks"

options indexes followsymlinks includes

</directory>


  假如用戶不希望執(zhí)行腳本或shell命令,能夠在options選項行中加入關(guān)鍵字includesnoexec,這樣能夠允許ssi,但是不能執(zhí)行cgi或腳本命令。(注:最新版本的apache服務(wù)器只有一個配置文檔httpd.conf,以上所提到的內(nèi)容都已被包含在該文檔中)


2.創(chuàng)建文檔.htaccess


  假如用戶不能直接訪問服務(wù)器配置文檔,能夠使用文檔編輯器創(chuàng)建一個名為.htaccess的文檔。注意,文檔名前一定要有符號".",這樣服務(wù)器才能知道該文檔是隱藏文檔,從而提高文檔的安全性,避免錯誤操作。在.htaccess文檔中需要加入以下三行文字:


options indexes followsymlinks includes

addtype application/x-httpd-cgi .cgi

addtype text/x-server-parsed-html .shtml


  完成之后能夠把.htaccess文檔上傳到服務(wù)端的相應(yīng)目錄,該文檔對任何子目錄有效。假如用戶希望在目錄級上禁止cgi或shell命令,能夠在.htaccess文檔中的options選項行加入關(guān)鍵字includesnoexec。


3.使用.shtml還是.html?


  任何包含ssi的文檔在下傳到客戶端之前,都必須經(jīng)過服務(wù)器的解析過程。雖然從某種程度上這樣會增加服務(wù)器的負(fù)載,但是除非用戶的網(wǎng)站每天有幾百萬的訪問用戶,某則服務(wù)器的性能不會有明顯的下降。但是,假如不是需要在每個頁面都使用ssi的話,確實沒有必要讓服務(wù)器解析每一個頁面。假如用戶只希望在幾個特別頁面中使用ssi,能夠?qū)⑽臋n的后綴名改為.shtml,這樣服務(wù)器就能夠只解析包含ssi的.shtml文檔。另一方面,假如有多個頁面使用了ssi,但是用戶不希望使用.shtml的后綴名時,能夠在.htaccess文檔中使用以下命令行:


addtype text/x-server-parsed-html .html

 

ssi語法


ssi在使用時遵循以下格式:


<!--#directive parameter="value"-->


  其中,directive是向服務(wù)器發(fā)送的指令名稱,parameter是指令的操作對象,而value則是用戶希望得到的指令處理結(jié)果。

  任何的ssi命令都是以"<!--#"開始,其中"<!—"和"#"之間不能有任何空格,否則服務(wù)器會把ssi命令當(dāng)稱普通的文檔注釋處理,不會顯示出任何結(jié)果,也不會產(chǎn)生錯誤提示。此外,ssi命令中的"="兩邊不能有空格,右邊的值必須包含在雙引號內(nèi),后面能夠跟空格,最后是結(jié)束標(biāo)簽"-->"。


ssi命令包含六大類指令連同各自的參數(shù),具體如下:

 

directives

parameters


config

errmsg, timefmt, sizefmt


include

virtual, file


echo

var


fsize

file


flastmod

file


exec

cmd, cgi

 

下面我們將逐一進(jìn)行介紹。

 

1.config命令


config命令主要用于修改ssi的默認(rèn)配置。其中:


  errmsg:配置默認(rèn)錯誤信息。為了能夠正常的返回用戶設(shè)定的錯誤信息,在html文檔中errmsg參數(shù)必須被放置在其他ssi命令的前面,否則客戶端只能顯示默認(rèn)的錯誤信息,而不是由用戶設(shè)定的自定義信息。


<!--#config errmsg="error! please email webmaster@mydomain.com -->


  timefmt:定義日期和時間的使用格式。timefmt參數(shù)必須在echo命令之前使用。


<!--#config timefmt="%a, %b %d, %y"-->


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


顯示結(jié)果為:


wednesday, april 12, 2000


也許用戶對上例中所使用的%a %b %d感到很陌生,下面我們就以表格的形式總結(jié)一下ssi中較為常用的一些日期和時間格式。


格式

說明

實例


%%

%

 

%a

一周七天的縮寫形式

thu


%a

一周七天

thursday


%b

月的縮寫形式

apr


%b

april


%d

一個月內(nèi)的第幾天

13


%d

mm/dd/yy日期格式

04/13/00


%h

小時(24小時制,從00到23)

01


%i

小時(12小時制,從00到11)

01


%j

一年內(nèi)的第幾天,從01到365

104


%m

一年內(nèi)的第幾個月,從01到12

04


%m

一小時內(nèi)的第幾分鐘,從00到59

10


%p

am或pm

am


%r

12小時制的當(dāng)?shù)貢r間,格式為%i:%m:%s am | pm

01:10:18 am


%s

一分鐘內(nèi)的第幾秒,從00到59

18


%t

24小時制的%h:%m:%s時間格式

01:10:18


%u

一年內(nèi)的第幾個星期,從00到52,以星期天作為每個星期的第一天

15


%w

一星期內(nèi)的第一天,從0到6

4


%w

一年內(nèi)的第幾個星期,從00到53,以星期一作為每個星期的第一天

15


%y

年的縮寫形式,從00到99

00


%y

用四位數(shù)字表示一年

2000


%z

時區(qū)名稱

mdt

 

  sizefmt:決定文檔大小是以字節(jié)、千字節(jié)還是兆字節(jié)為單位表示。假如以字節(jié)為單位,參數(shù)值為"bytes";對于千字節(jié)和兆字節(jié)能夠使用縮寫形式。同樣,sizefmt參數(shù)必須放在fsize命令的前面才能使用。


<!--#config sizefmt="bytes" -->


<!--#fsize file="index.html" -->


2.include命令


  include命令能夠把其他文檔中的文字或圖片插入到當(dāng)前被解析的文檔中,是整個ssi的關(guān)鍵所在。通過include命令只需要改變一個文檔就能夠瞬間更新整個站點!


  include命令具備兩個不同的參數(shù),假如使用錯誤的參數(shù)更新站點的話,不但達(dá)不到初衷,反而會得到一大堆的錯誤信息。


  virtual:給出到服務(wù)器端某個文檔的虛擬路徑。例如:


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


  為了更加合理的組織站點的內(nèi)容,用戶能夠在根目錄下創(chuàng)建includes子目錄來存放任何的包含文檔。virtual參數(shù)能夠通知服務(wù)器所要包含的是個虛擬文檔,即文檔和當(dāng)前被解析的文檔不是位于同一個目錄,而是存放在其他目錄中。服務(wù)器會根據(jù)該參數(shù)的值找到根目錄下的includes子目錄。使用這種方法,用戶能夠把任何html文檔包含的文檔放在一個目錄中,而根據(jù)相互之間的關(guān)系把不同的頁面保存在不同的目錄或子目錄中。無論服務(wù)器解析哪一個文檔都能夠找到所包含的文檔,不會產(chǎn)生任何錯誤。


  但是這里有一個小問題需要解決。一般我們都會在頁面中加入一些title和meta標(biāo)簽,假如我們規(guī)定任何的頁面都調(diào)用相同的頁眉文檔的話,就顯得很不靈活。用戶碰到這樣的問題時,能夠使用兩個包含文檔,一個配置title標(biāo)簽前的內(nèi)容,另一個配置meta標(biāo)簽后的部分,而在兩個包含文檔之間則能夠添加任何定制內(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" -->


  從上我們能夠看出通過在頁面中包含頁眉和頁腳能夠大大減少站點更新的工作量。但是假如我們希望動態(tài)顯示一些內(nèi)容,例如頁面的最后更新時間等該怎么辦呢?沒問題,我們能夠把包含文檔使用.html后綴保存,這樣就能夠在包含文檔中調(diào)用其他的包含文檔。


  file:給出到當(dāng)前目錄的相對路徑,其中不能使用"../",也不能使用絕對路徑。例如:


  <!--#include file="header.html" -->


  這就需要每一個目錄中都包含一個header.html文檔。當(dāng)然,采用這樣的方法并不比更新每一個頁面簡單多少,但是假如用戶只更新一、兩個文檔的話還是很方便的。例如,假如我們不希望讓一個對html不熟悉的人直接改變網(wǎng)站中的新聞頁面的話,能夠只讓他更新一個單獨的文本文檔,然后再把該文檔包含到hmtl文檔中,這樣即不會破壞原頁面,同時又更新了內(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地址肯定會讓人頭疼。假如使用ssi,一切就會迎刃而解。因為我們能夠把網(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è)定時區(qū)的日期和時間。用戶能夠結(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)時間為基準(zhǔn)的日期。例如:


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


  last_modified:顯示當(dāng)前文檔的最后更新時間。同樣,這是ssi中很實用的一個功能,只要在html文檔中加入以下這行簡單的文字,就能夠在頁面上動態(tài)的顯示更新時間。


  <!--#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:顯示客戶端請求所使用的協(xié)議名稱和版本,如http/1.0。例如:


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


    server_port:顯示服務(wù)器的響應(yīng)端口。例如:


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


    request_method:顯示客戶端的文檔請求方法,包括get, head, 和post。例如:


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


    remote_host:顯示發(fā)出請求信息的客戶端主機(jī)名稱。


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


    remote_addr:顯示發(fā)出請求信息的客戶端ip地址。


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


    auth_type:顯示用戶身份的驗證方法。


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


    remote_user:顯示訪問受保護(hù)頁面的用戶所使用的帳號名稱。


    <!--#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ù)顯示出一個頁面上任何鏈接頁面的更新日期。方法如下:


<!--#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


  也許有的讀者會認(rèn)為兩個鏈接就這么復(fù)雜,一點也不方便。其實,假如頁面上有20個或更多的鏈接,而且每個鏈接都定期更新的話,就能夠看出使用flastmod顯示修改日期的作用。

 

6.exec


exec命令能夠執(zhí)行cgi腳本或shell命令。使用方法如下:


  cmd:使用/bin/sh執(zhí)行指定的字串。假如ssi使用了includesnoexec選項,則該命令將被屏蔽。


  cgi:能夠用來執(zhí)行cgi腳本。例如,下面這個例子中使用服務(wù)端cgi-bin目錄下的counter.pl腳本程式在每個頁面放置一個計數(shù)器:


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

來源:網(wǎng)絡(luò)搜集//所屬分類:負(fù)載集群教程/更新時間:2013-04-14
相關(guān)負(fù)載集群教程