shtml和asp 有一些相似,以shtml命名的文件裡,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中寫入SSI指令,當客戶端訪問這些shtml文件時,服務器端會把這些SHTML文件進行讀取和解釋,把SHTML文件中包含的SSI指令解釋出來.
最後的那句最有用了,簡單點說.shtml在表面上看和html沒啥太大的區別,但咱們用起來呢,那就不一樣了.在對shtml的了解中,我們可以知道,shtml可以使用<#include>,這樣的話,我們就可以直接將自己的廣告代碼或者自己要推薦的東西引用過來.使用方法如下:
在後綴為shtml或者shtm的文檔中間,你想要的位置插入這個標記,就能將info.htm的文件引入了.上面我有提到,我要做一個小說站.大家都知道小說站最好是生成靜態,來減輕服務器的負載,我的站一直都是生成靜態的,咱們使用shtm在引入廣告之後,最最重要的一點就是,可以在info.htm中加入咱們要推薦的小說.大家都知道,做小說的要在自己不重新生成代碼的情況下來更換頁面的推薦內容的話,只有用到JS,但是搜索引擎的蜘蛛碰到JS是直接會忽略的,我們使用JS來推薦內容的話.可以對搜索優化不太好,但是,如果咱們使用shtm的話,那就不一樣的.因為可以使用SSI指令.只需要使用include引入info.htm,然後將需要推薦的小說或者其他的信息直接寫入info.htm中,這樣.只要是shtm並且引入了info.htm的頁面將會跟著改變,而且搜索引擎依舊會抓取.廢話這麼多主要是我感覺這個東西很好,用起來也很方便.所以呢.嗦嗦的講了半天,實際是上告訴做小說站的哥們,如果用shtm還是不錯的選擇.
不知道寫了這麼多.大家明白不?
APACHE開啟shtml,修改srm.con:AddType text/x-server-parsed-html .shtml 將只對.shtml擴展名的文件解析SSI指令
Windows好像服務器默認就是支持的,隻隻需在IIS的Web服務擴展裡設置在服務器端的包含文件為允許即可.
如果你要獲得關於一些html指令的信息,請繼續往下看
程序代碼:
<!-– 指令名稱=指令參數>
<!-– 指令名稱=指令參數>
如程序代碼:
<!–#include file=info.htm–>
<!–#include file=info.htm–>
說明:
1. <!– –>是HTML語法中表示註釋,當WEB服務器不支持SSI時,會忽略這些信息。
2. #include 為SSI指令之一。
3. file 為include的參數, info.htm為參數值,在本指令中指將要包含的文檔名。
注意:
1. <!–與#號間無空格,只有SSI指令與參數間存在空格。
2.上面的標點=,一個也不能少。
3. SSI指令是大小寫敏感的,因此參數必須是小寫才會起作用。
SSI指令使用詳解
#echo 示範
作用:
將環境變量插入到頁面中。
文法:
程序代碼:
<!–#echo var=變量名稱–>
本文檔名稱:程序代碼:
<!–#echo var=DOCUMENT_NAME–>
現在時間:程序代碼:
<!–#echo var=DATE_LOCAL–>
<!–#echo var=DATE_LOCAL–>
你的IP地址是程序代碼:
<!–#echo var=REMOTE_ADDR–>
#include 示範
作用:
將文本文件的內容直接插入到文檔頁面中。
文法:
程序代碼:
<!–#include file=文件名稱–>
<!–#include virtual=文件名稱–>
file 文件名是一個相對路徑,該路徑相對於使用#include 指令的文檔所在的目錄。被包含文件可以在同一級目錄或其子目錄中,但不能在上一級目錄中。如表示當前目錄下的的nav_head.htm文檔,則為file=nav_head.htm。
virtual 文件名是Web 站點上的虛擬目錄的完整路徑。如表示相對於服務器文檔根目錄下hoyi目錄下的nav_head.htm文件;則為virtual=/hoyi/nav_head.htm
參數:
file 指定包含文件相對於本文檔的位置
virtual 指定相對於服務器文檔根目錄的位置
注意:
1、文件名稱必須帶有擴展名。
2、被包含的文件可以具有任何文件擴展名,我覺得直接使用htm擴展名最方便,微軟公司推薦使用.inc 擴展名(這就看你的愛好了)。
示例:
程序代碼:
<!–#include file=nav_head.htm–>將頭文件插入到當前頁面
<!–#include file=nav_foot.htm–>將尾文件插入到當前頁面
#flastmod 和#fsize 示範
作用: #flastmod 文件最近更新日期
#fsize 文件的長度
文法:
程序代碼:
<!–#flastmod file=文件名稱–>
<!–#fsize file=文件名稱–>
參數:
file 指定包含文件相對於本文檔的位置如info.txt 表示當前目錄下的的info.txt文檔
virtual 指定相對於服務器文檔根目錄的位置如/hoyi/info.txt 表示
注意:
文件名稱必須帶有擴展名。
示例:
程序代碼:
<!–#flastmod file=news.htm–>
將當前目錄下news.htm文件的最近更新日期插入到當前頁面
程序代碼:
<!–#fsize file=news.htm–>
將當前目錄下news.htm的文件大小入到當前頁面
#exec 示範
作用:
將某一外部程序的輸出插入到頁面中。可插入CGI程序或者是常規應用程序的輸入,這取決於使用的參數是cmd還是cgi。
文法:
程序代碼:
<!–#exec cmd=文件名稱–>
<!–#exec cgi=文件名稱–>
參數:
cmd 常規應用程序
cgi CGI腳本程序
示例:
程序代碼:
<!–#exec cmd=cat /etc/passwd–>將會顯示密碼文件
<!–#exec cmd=dir /b–>將會顯示當前目錄下文件列表
<!–#exec cgi=/cgi-bin/gb.cgi–>將會執行CGI程序gb.cgi。
<!–#exec cgi=/cgi-bin/access_log.cgi–>將會執行CGI程序access_log.cgi。
注意:
從上面的示例可以看出,這個指令相當方便,但是也存在安全問題。
禁止方法:
. Apache,將access.conf中的Options Includes ExecCGI這行代碼刪除;
.在IIS中,要禁用#exec 命令,可修改SSIExecDisable 元數據庫;
#config
作用: 指定返回給客戶端瀏覽器的錯誤信息、日期和文件大小的格式。
文法:
程序代碼:
<!–#config errmsg=自定義錯誤信息–>
<!–#config sizefmt=顯示單位–>
<!–#config timefmt=顯示格式–>
參數:
errmsg 自定義SSI執行錯誤信息,可以為任何你喜歡的方式。
sizefmt 文件大小顯示方式,默認為字節方式(bytes)可以改為千字節方式(abbrev)
timefmt 時間顯示方式,最靈活的配置屬性。
示例: 顯示一個不存在文件的大小
程序代碼:
<!–#config errmsg=服務器執行錯誤,請聯繫管理員阿川,謝謝! –>
<!–#fsize file=不存在的文件.htm–>
以千字節方式顯示文件大小
程序代碼:
<!–#config sizefmt=abbrev–>
<!–#fsizefile=news.htm–>
以特定的時間格式顯示時間
程序代碼:
<!–#config timefmt=%Y年/%m月%d日星期%W 北京時間%H:%M:%s,%Y年已過去了%j天今天是%Y年的第%U個星期–>
<!–#echo var=DATE_LOCAL–> 顯示今天是星期幾,幾月,時區
<!–#config timefmt=今天%A, %B ,服務器時區是%z,是–>
<!–#echo var=DATE_LOCAL–>