服務(wù)器端包含、嵌入技術(shù)SSI(Server SideInc lude)詳解
SSI簡(jiǎn)介
SSI在靜態(tài)文件中非常有用,能分離一些可變的模塊,如每日排行榜等。其主要作用有:
1.顯示服務(wù)器端環(huán)境變量<#echo>
2.將文本內(nèi)容直接插入到文檔中<#include>
3.顯示W(wǎng)EB文檔相關(guān)信息<#flastmod #fsize> (如文件制作日期/大小等)
4.直接執(zhí)行服務(wù)器上的各種程序<#exec>(如CGI或其他可執(zhí)行程序)
5.設(shè)置SSI信息顯示格式<#config>(如文件制作日期/大小顯示方式)
6.高級(jí)SSI<XSSI>可設(shè)置變量使用if條件語(yǔ)句。 apache、nginx等都支持SSI命令,配置下就可以,Nginx的配置可以參考:
http://wiki.nginx.org/HttpSsiModuleChs
SSI 的默認(rèn)擴(kuò)展名是 .stm、.shtm 和 .shtml
SSI語(yǔ)法
示例:
<!--#command param="value"-->
SSI的語(yǔ)法非常簡(jiǎn)單,但使用中需注意以下幾點(diǎn):
1.<!–與#之間無(wú)空格
2.SSI大小寫(xiě)敏感
3.所有value需寫(xiě)在引號(hào)中
SSI命令
config命令
config命令主要用于修改SSI的默認(rèn)設(shè)置,諸如時(shí)間格式,默認(rèn)錯(cuò)誤信息,文件大小單位。
設(shè)置默認(rèn)錯(cuò)誤信息:errmsg
定義日期和時(shí)間格式:timefmt
定義文件大小單位
config命令只對(duì)其后使用的命令生效。同時(shí),后定義的設(shè)置具有更高的優(yōu)先級(jí),會(huì)覆蓋之前的設(shè)置。
include命令
include命名可能是SSI中使用最多的命令,也是SSI最主要的功能體現(xiàn);
Include命令可以把其它文檔中的文字或圖片插入到當(dāng)前被解析的文檔中,通過(guò)Include命令只需要改動(dòng)一個(gè)文件就可以瞬間更新整個(gè)站點(diǎn)!
<!--#include file="inc/desc.inc"-->
include命令支持通過(guò)虛擬路徑引入文件(virtual),以及相對(duì)路徑引入文件(file),引用的文件類(lèi)型不限。
set命令
可以使用set進(jìn)行變量的定義:
變量定義后便可以使用了:
定義變量時(shí)使用環(huán)境變量:
如果是單個(gè)環(huán)境變量可以不使用{}分割:
環(huán)境變量的引用都需要使用$前綴,如果$僅作為字符使用,通過(guò)\$轉(zhuǎn)義即可。
echo命令
echo顯示變量值,包括自定義變量、環(huán)境變量
注意:echo命令中使用的環(huán)境變量不需要使用$前綴。 SSI的主要環(huán)境變量如下:
| name | description | type |
| DOCUMENT_NAME | 當(dāng)前文檔名 | SSI |
| DOCUMENT_URI | 當(dāng)前文檔虛擬路徑 | SSI |
| QUERY_STRING_UNESCAPED | 未經(jīng)轉(zhuǎn)義處理的由客戶(hù)端發(fā)送的查詢(xún)字串,所有的特殊字符前面都有轉(zhuǎn)義符”\” | SSI |
| DATE_LOCAL | 服務(wù)器設(shè)定時(shí)區(qū)的日期和時(shí)間 | SSI |
| DATE_GMT | 功能與DATE_LOCAL一樣,但返回的是以格林尼治標(biāo)準(zhǔn)時(shí)間為基準(zhǔn)的日期 | SSI |
| LAST_MODIFIED | 當(dāng)前文檔的最后更新時(shí)間 | SSI |
| SERVER_SOFTWARE | 服務(wù)器軟件的名稱(chēng)和版本 | CGI |
| SERVER_NAME | 服務(wù)器的主機(jī)名稱(chēng),DNS別名或IP地址 | CGI |
| SERVER_PROTOCOL | 客戶(hù)端請(qǐng)求所使用的協(xié)議名稱(chēng)和版本 | CGI |
| SERVER_PORT | 服務(wù)器的響應(yīng)端口 | CGI |
| REMOTE_HOST | 發(fā)出請(qǐng)求信息的客戶(hù)端主機(jī)名稱(chēng) | CGI |
| REMOTE_ADDR | 發(fā)出請(qǐng)求信息的客戶(hù)端IP地址 | CGI |
| AUTH_TYPE | 用戶(hù)身份的驗(yàn)證方法 | CGI |
| REMOTE_USER | 訪問(wèn)受保護(hù)頁(yè)面的用戶(hù)所使用的帳號(hào)名稱(chēng) | CGI |
更多的環(huán)境變量可使用printenv命令查看 printenv命令 顯示所有環(huán)境變量
fsize命令
顯示指定文件的大小,可結(jié)合config sizefmt指定輸出格式。
<!--輸出當(dāng)前文檔大小-->
<!--#fsize file="$DOCUMENT_NAME"-->
<!--#fsize virtual="$DOCUMENT_URI"-->
flastmod命令
顯示指定文件的最后更新日期,可結(jié)合config sizefmt指定輸出格式。
<!--輸出當(dāng)前文檔大小-->
<!--#flastmod file="$DOCUMENT_NAME"-->
<!--#flastmod virtual="$DOCUMENT_URI"-->
exec命令
Exec 命令可以執(zhí)行 CGI 腳本或者 shell 命令。使用方法如下:
1.CMD:使用 /bin/sh 執(zhí)行指定的字串。如果 SSI 使用了 IncludesNOEXEC 選項(xiàng),則該命令將被屏蔽
2.CGI:可以用來(lái)執(zhí)行 CGI 腳本
if…語(yǔ)句
SSI中也可以是用條件判斷語(yǔ)句if,語(yǔ)法如下:
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->
示例:
<!--#if expr="$DOCUMENT_NAME=index.shtml"-->
<p>這是通過(guò)if判斷當(dāng)前文檔名為"index.shtml"后顯示</p>
<!--#elif expr="$DOCUMENT_NAME=index.html"-->
<p>這是通過(guò)if判斷當(dāng)前文檔名為"index.html"后顯示</p>
<!--#else -->
<p>既不是"index.shtml",也不是"index.html"</p>
<!--#endif -->
demo
相關(guān)文章
Virtualbox安裝Lubuntu 18.04 64位的圖文教程
這篇文章主要為大家詳細(xì)介紹了Virtualbox安裝Lubuntu 18.04 64位的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Linux系統(tǒng)關(guān)機(jī)命令之間的區(qū)別及用法詳解
在本篇文章里小編給大家整理了一篇關(guān)于Linux系統(tǒng)關(guān)機(jī)命令之間的區(qū)別及用法詳解內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。2020-12-12
Linux實(shí)現(xiàn)驅(qū)動(dòng)模塊傳參過(guò)程解析
這篇文章主要介紹了Linux實(shí)現(xiàn)驅(qū)動(dòng)模塊傳參過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
開(kāi)發(fā)環(huán)境Ubuntu16安裝以后的初始化設(shè)置
今天小編就為大家分享一篇關(guān)于開(kāi)發(fā)環(huán)境ubuntu16安裝以后的初始化設(shè)置,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
centos8 使用yum 安裝 mongodb 4.2的方法
這篇文章主要介紹了centos8 使用yum 安裝 mongodb 4.2的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
LNMP下FTP服務(wù)器的安裝與使用方法(Pureftpd和Proftpd)
FTP是網(wǎng)站文件維護(hù)中使用比較多的,目前LNMP一鍵安裝包中有Pureftpd和Proftpd服務(wù)器安裝腳本2013-06-06
讓Apache支持shtml實(shí)現(xiàn)include文件解析的配置方法
Apache支持include文件解析shtml首先要應(yīng)該修改Apache配置文件httpd.conf2011-03-03
ssh遠(yuǎn)程登陸沒(méi)有用戶(hù)名和主機(jī)名的解決方法
這篇文章主要給大家分享了ssh遠(yuǎn)程登陸沒(méi)有用戶(hù)名和主機(jī)名的解決方法,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03

