森林之原
五月 23, 2012, 08:15:34 am *
歡迎光臨, 訪客. 請先 登入註冊一個帳號.

請輸入帳號, 密碼以及預計登入時間
新聞: 官方釋出 SMF 2.0 beta。繁體中文已經完成。請到 SMF 的版面下載測試。如有問題請通知。
 
   首頁   說明 搜尋 日曆 登入 註冊  
頁: [1]   向下
  寄送主題  |  列印  
作者 主題: {教學} SSI (Server Side Includes) 入門教學  (閱讀 9254 次)
0 會員 以及 3 訪客 正在閱讀本篇主題.
Andrew::
魔,羯
*
離線 離線

文章: 217



個人網站
« 於: 十二月 19, 2004, 11:31:05 pm »

SSI (Server Side Includes) 入門教學

前言:
SSI 是一個可以讓你使用動態網頁的技術. SSI 跟一般的HTML並沒太大的差別,
所以如果你會HTML應該很快就能了解他的用途和使用方法. 這篇教學會假設你用的是
Apache 主機. 有些主機不支援SSI, 而 Apache 也必須先啟動 SSI 才能使用, 所以最好先
確定你的主機是否能夠使用SSI.
SSI 可以讓你將小段的動態內容放到現有的HTML網頁, 而不需使用 CGI 或其他的動態技術.
如果你的網頁大部分的內容都是動態的, 你最好考慮用其他技術像 CGI 或 PHP.

設定 Apache 的 SSI 支援:
第一 Apache 的 httpd.conf 執行檔必須要有下列命令:
Options +Includes

請確定上面的執行檔是放在你要執行SSI的檔案夾下面, 以免被其他的命令蓋過.
Apache 一開始並不會認為每一個網頁都是SSI網頁, 你必須告訴 Apache 哪一種副檔名是
SSI網頁. 通常 SSI 網頁的副檔名是 .shtml. 一樣在 httpd.conf 裡面加上:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

用上面的方法有一個缺點, 如果你想在現有的 HTML 網頁加上 SSI 你就必須改他的檔名, 及所有
連結的網頁. 如果你是用 Windows 這是唯一的方法.

另一個方法是用 XBitHack 命令:
XBitHack on

XBitHack 會告訴 Apache 哪一些檔案是 SSI 檔, 如果檔案裡面有特殊的執行指令.
所以要在現有的HTML檔案使用 SSI 你可以用下面的指令:
chmod +x pagename.html

因為 Windows 沒有特殊的執行指令, 所以 XBitHack 不能用在 Windows 下.

基本 SSI 命令:
基本的 SSI 語法是:
<!--#element attribute=value attribute=value-->

因為 SSI 語法是放在 HTML 的注解內所以如果不能使用 SSI 並不會對客戶端造成影響.

下面是一些 SSI 範例:
今天的日期
<!--#echo var="DATE_LOCAL" -->
上面的 echo 元素會顯示後面的設定值. SSI 還包括許多內建的設定值. 你也可以用 config 來改變顯示的
變數, 譬如說改變上面所顯示的日期:
<!--#config timefmt="%A %B %d, %Y" -->
今天是 <!--#echo var="DATE_LOCAL" -->

檔案修改日期
這個檔案的最後修改於 <!--#flastmod file="index.html" -->
你也可以用上面描述的方法改變日期顯示的格式. 如果你不想提供檔案名,
譬如說將 SSI 語法放到某個網頁來顯示此網頁的修改日期, 你可以用下面的方法:
<!--#config timefmt="%D" -->
這個檔案的最後修改於 <!--#echo var="LAST_MODIFIED" -->

包括 CGI 程式顯示的結果
這是非常普通的方法, 如果你想讓 SSI 輸出 CGI 程式的結果, 像記數器等等:
<!--#include virtual="/cgi-bin/counter.pl" -->

包括標題/註尾
如果你想在每個網頁放入標題或註尾, 你可以用 SSI 來自動幫你加上.
這樣只需要改一個檔案就可以改變全部網頁的標題/註尾.
SSI 的 include 元素可以用 file 或 virtual 屬性來決定包括哪個檔案.
file 屬性必須是相對的路徑, 也就是說一開始不能用 / 或 包括 ../ 在路徑內.
另一個辦法是用 virtual 屬性. virtual 屬性必須是相對路徑, 但一開始可以用 /.
不管用什麼方法, 檔案必須在 SSI 網頁的主機內.
<!--#include virtual="/footer.html" -->

包括的 SSI 網頁內也可以包括另一個 SSI 網頁.

設定變數
用 set 命令可以讓你設定變數. 語法如下:
<!--#set var="name" value="Rich" -->

你也可以用 Apache 的 environment variable 或者是上面描述的變數 (LAST_MODIFIED 等等)
來指派給你設定的變數. 在變數前面加上 $ 來設定非字串常值. 使用方法如下:
<!--#set var="modified" value="$LAST_MODIFIED" -->

如果你的字串常值包括 $, 你可以用 \ 逸出字元.
<!--#set var="cost" value="\$100" -->

如果變數出現在字串的中間, 請將變數放入 { }, 像下面的方法:
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

條件運算式
你可以用條件運算式來決定使用哪些 SSI 語法:
<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

test_condition 可以是任何邏輯的比較運算子, 譬如說比較變數的值或測試 true 或 false.

在你的 httpd.conf 你可以加入:
BrowserMatchNoCase macintosh Mac
BroswerMatchNoCase MSIE InternetExplorer

這會設定變數 Mac 和 InternetExplorer 為 true, 如果使用的瀏覽器是其中一個.
然後在 SSI 網頁內你可以用下面方法:
<!--#if expr="${Mac} && ${InternetExplorer}" -->
瀏覽器是 Mac 或 IE
<!--#else -->
瀏覽器不是 Mac 或 IE
<!--#endif -->

上面描述的只是一小段 SSI 能為你做的動態網頁, 還有更多有趣的方法等著你去發掘.

資料來源: http://httpd.apache.org/docs-2.0/howto/ssi.html
向版主檢舉   已記錄

monkey
訪客
« 回覆文章 #1 於: 九月 19, 2005, 11:31:41 pm »

引用
SSI 可以讓你將小段的動態內容放到現有的HTML網頁, 而不需使用 CGI 或其他的動態技術.
如果你的網頁大部分的內容都是動態的, 你最好考慮用其他技術像 CGI 或 PHP.
不知道 如果在一個網頁上使用 大量的SSI 會怎樣.. 網頁開啟變比較慢?較耗費cpu資源?  smiley01_040

向版主檢舉   已記錄
頁: [1]   向上
  寄送主題  |  列印  
 
前往:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Valid XHTML 1.0! Valid CSS!