SSI使用詳解(轉一)

來源:互聯網
上載者:User
詳解   你是否曾經或正在為如何能夠在最短的時間內完成對一個包含上千個頁面的網站的修改而苦惱?那麼可以看一下本文的介紹,或許能夠對你有所協助。

什麼是SSI?

  SSI是英文Server Side Includes的縮寫,翻譯成中文就是伺服器端包含的意思。從技術角度上說,SSI就是HTML檔案中,可以通過注釋行調用的命令或指標。SSI 具有強大的功能,只要使用一條簡單的SSI 命令就可以實現整個網站的內容更新,動態顯示時間和日期,以及執行shell和CGI指令碼程式等複雜的功能。SSI 可以稱得上是那些資金短缺、時間緊張、工作量大的網站開發人員的最佳幫手。

  SSI最初在NCSA伺服器平台上推出,在Apache伺服器中得到擴充和加強,目前已經可以在幾乎所有的伺服器上運行。本文將主要結合Apache伺服器介紹SSI的使用方法。


如何啟動SSI?

  在Apache伺服器下,可以通過直接編輯伺服器設定檔或者在需要使用SSI的目錄中建立.htaccess檔案啟動SSI。具體來說,過程如下:


1.伺服器設定檔

  如果使用者具有對伺服器設定檔的存取權限,可以通過編輯檔案access.conf和srm.conf啟動SSI。

  首先使用Telnet遠程登入伺服器,找到設定檔的存放目錄。一般來說,Apache伺服器的設定檔都被儲存在“/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>標籤之間還包含其它設定內容。

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

  如果使用者不希望執行指令碼或shell命令,可以在options選項行中加入關鍵字IncludesNOEXEC,這樣可以允許SSI,但是不能執行CGI或指令碼命令。(註:最新版本的Apache伺服器只有一個設定檔httpd.conf,以上所提到的內容都已經被包含在該檔案中)

2.建立檔案.htaccess

  如果使用者不能直接存取伺服器設定檔,可以使用檔案編輯器建立一個名為.htaccess的檔案。注意,檔案名稱前一定要有符號“.”,這樣伺服器才能知道該檔案是隱藏檔案,從而提高檔案的安全性,避免錯誤操作。在.htaccess檔案中需要加入以下三行文字:

Options Indexes FollowSymLinks Includes
AddType application/x-httpd-CGI .CGI
AddType text/x-server-parsed-html .shtml

  完成之後可以把.htaccess檔案上傳到服務端的相應目錄,該檔案對所有子目錄有效。如果使用者希望在目錄級上禁止CGI或shell命令,可以在.htaccess檔案中的Options選項行加入關鍵字IncludesNOEXEC。

3.使用.shtml還是.html?

  任何包含SSI的檔案在下傳到用戶端之前,都必須經過伺服器的解析過程。雖然從某種程度上這樣會增加伺服器的負載,但是除非使用者的網站每天有幾百萬的訪問使用者,某則伺服器的效能不會有明顯的下降。不過,如果不是需要在每個頁面都使用SSI的話,確實沒有必要讓伺服器解析每一個頁面。如果使用者只希望在幾個特殊頁面中使用SSI,可以將檔案的尾碼名改為.shtml,這樣伺服器就可以只解析包含SSI的.shtml檔案。另一方面,如果有多個頁面使用了SSI,但是使用者不希望使用.shtml的尾碼名時,可以在.htaccess檔案中使用以下命令列:

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


SSI文法

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

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

  其中,directive是向伺服器發送的指令名稱,parameter是指令的操作對象,而value則是使用者希望得到的指令處理結果。
  所有的SSI命令都是以“<!--#”開始,其中“<!—”和“#”之間不能有任何空格,否則伺服器會把SSI命令當稱普通的檔案注釋處理,不會顯示出任何結果,也不會產生錯誤提示。此外,SSI命令中的“=”兩邊不能有空格,右邊的值必須包含在雙引號內,後面可以跟空格,最後是結束標籤“-->”。

SSI命令包含六大類指令以及各自的參數,具體如下:


directives
parameters

Config
errmsg, timefmt, sizefmt

include
virtual, file

echo
var

fsize
file

flastmod
file

exec
cmd, cgi



下面我們將逐一進行介紹。


1.Config命令

Config命令主要用於修改SSI的預設設定。其中:

  Errmsg:設定預設錯誤資訊。為了能夠正常的返回使用者設定的錯誤資訊,在HTML檔案中Errmsg參數必須被放置在其它SSI命令的前面,否則用戶端只能顯示預設的錯誤資訊,而不是由使用者設定的自訂資訊。

<!--#config errmsg="Error! Please email webmaster@mydomain.com -->

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

<!--#config timefmt="%A, %B %d, %Y"-->

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

顯示結果為:

Wednesday, April 12, 2000

也許使用者對上例中所使用的%A %B %d感到很陌生,下面我們就以表格的形式總結一下SSI中較為常用的一些日期和時間格式。

格式
說明
執行個體

%%
%
 
%a
一周七天的縮寫形式
Thu

%A
一周七天
Thursday

%b
月的縮寫形式
Apr

%B

April

%d
一個月內的第幾天
13

%D
mm/dd/yy日期格式
04/13/00

%H
小時(24小時制,從00到23)
01

%I
小時(12小時制,從00到11)
01

%j
一年內的第幾天,從01到365
104

%m
一年內的第幾個月,從01到12
04

%M
一小時內的第幾分鐘,從00到59
10

%p
AM或PM
AM

%r
12小時制的當地時間,格式為%I:%M:%S AM | PM
01:10:18 AM

%S
一分鐘內的第幾秒,從00到59
18

%T
24小時制的%H:%M:%S時間格式
01:10:18

%U
一年內的第幾個星期,從00到52,以星期天作為每個星期的第一天
15

%w
一星期內的第一天,從0到6
4

%W
一年內的第幾個星期,從00到53,以星期一作為每個星期的第一天
15

%y
年的縮寫形式,從00到99
00

%Y
用四位元字表示一年
2000

%Z
時區名稱
MDT



  Sizefmt:決定檔案大小是以位元組、KB還是MB為單位表示。如果以位元組為單位,參數值為“bytes”;對於KB和MB可以使用縮寫形式。同樣,sizefmt參數必須放在fsize命令的前面才能使用。

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

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


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。