關於shtml檔案的完整闡析

2021-03-31 08:57:01 字數 4113 閱讀 2148

ssi使用詳解

你是否曾經或正在為如何能夠在最短的時間內完成對乙個包含上千個頁面的**的修改而苦惱?那麼可以看一下本文的介紹,或許能夠對你有所幫助。

什麼是ssi?

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

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

如何啟動ssi?

1.伺服器配置檔案

如果使用者具有對伺服器配置檔案的訪問許可權,可以通過編輯檔案access.conf和srm.conf啟動ssi。

首先使用tel***遠端登入伺服器,找到配置檔案的存放目錄。一般來說,apache伺服器的配置檔案都被儲存在「/usr/local/etc/httpd/conf」目錄下。使用任何一種文字編輯器開啟檔案srm.conf,找到以下幾行:

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

# scriptaliased directories, un***ment the following lines.

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

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

儲存所做的修改,然後再開啟檔案access.conf。使用者需要在檔案中找到設定documentroot(根檔案)的部分。一般來說該段文字如下,但是不排除$#@60;directory$#@62;和$#@60;/directory$#@62;標籤之間還包含其它設定內容。

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

2.建立檔案.htaccess

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

完成之後可以把.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在使用時遵循以下格式:

$#@60;!--#directive parameter="value"--$#@62;

其中,directive是向伺服器傳送的指令名稱,parameter是指令的操作物件,而value則是使用者希望得到的指令處理結果。

所有的ssi命令都是以「$#@60;!--#」開始,其中「$#@60;!—」和「#」之間不能有任何空格,否則伺服器會把ssi命令當稱普通的檔案注釋處理,不會顯示出任何結果,也不會產生錯誤提示。此外,ssi命令中的「=」兩邊不能有空格,右邊的值必須包含在雙引號內,後面可以跟空格,最後是結束標籤「--$#@62;」。

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

directives

parameters

config

errmsg, timefmt, sizefmt

include

virtual, file

echo

varfsize

file

flastmod

file

exec

cmd, cgi

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

1.config命令

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

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

$#@60;!--#config errmsg="error! please email webmaster@mydomain.*** --$#@62;

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

$#@60;!--#config timefmt="%a, %b %d, %y"--$#@62;

$#@60;!--#echo var="last_modified" --$#@62;

顯示結果為:

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到64%w

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

15%y

年的縮寫形式,從00到99

00%y

用四位數字表示一年

2000

%z時區名稱

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

$#@60;!--#config sizefmt="bytes" --$#@62;

$#@60;!--#fsize file="index.html" --$#@62;

關於SHTML和HTML的區別

blog的群裡有朋友問起shtml和html的區別,如果用一句話來解釋就是 shtml 不是html而是一種伺服器 api,shtml是伺服器動態產成的html.雖然兩者都是超文字格式,但shtml是一種用於ssi技術的檔案。也就是server side include ssi 伺服器端包含指令。如...

HTML檔案和SHTML檔案的區別

ps 本人親測,阿里雲2核4g5m的伺服器價效比很高,新使用者一塊多一天,老使用者三塊多一天,最高可以買三年,感興趣的可以戳一下 阿里雲折扣伺服器 shtml和html的區別,如果用一句話來解釋就是 shtml 不是html而是一種伺服器 api,shtml是伺服器動態產成的html.雖然兩者都是超...

shtml檔案開啟時原始檔的問題

需要在apach的httpd.conf中配置 注釋掉下面三句,主要是前兩句 1.addtype text html shtml 作用 規定apache把.shtml檔案傳輸給客戶端的時候用html的方式顯示。2.addoutputfilter includes 作用 提示伺服器遇到.shtml檔案把...