承接上篇啟用配置,本文深入剖析 SSI 核心指令——config、include、echo 的參數詳情、組合用法與實戰模式,助你構建可維護、高效能的靜態站點架構。
語法:<!--#config param="value" -->,**必須置於其他 SSI 指令之前**生效。
<!--#config errmsg="<div class='ssi-error'>片段載入失敗,請聯繫管理員</div>" -->
替換預設的 [an error occurred while processing this directive],提升用戶體驗、隱藏內部路徑。
支援 strftime() 所有格式符號:
| 符號 | 含義 | 範例輸出 |
|---|---|---|
%A | 完整星期名 | Wednesday |
%B | 完整月份名 | April |
%d | 兩位數日期 | 12 |
%Y | 四位數年份 | 2024 |
%H:%M:%S | 24小時制時間 | 14:30:05 |
%Z | 時區名 | CST |
<!--#config timefmt="%Y-%m-%d %H:%M:%S %Z" -->
<!--#echo var="DATE_LOCAL" -->
<!-- 輸出:2024-04-12 14:30:05 CST -->
bytes:精確位元組(12345)abbrev(預設):人類可讀縮寫(12K、1.2M)<!--#config sizefmt="bytes" -->
<!--#fsize file="logo.png" -->
「修改一處,全站更新」的關鍵。兩種路徑模式:
<!--#include virtual="/includes/header.html" -->
virtual="/cgi-bin/counter.cgi"/includes/ 目錄集中管理公共片段。<!--#include file="header.html" -->
../、絕對路徑。SSI 無原生參數傳遞,但可通過環境變量變通:
<!--#set var="PAGE_TITLE" value="產品列表" -->
<!--#include virtual="/includes/header.html" -->
在 header.html 中使用:<title><!--#echo var="PAGE_TITLE" --></title>
語法:<!--#echo var="VAR_NAME" -->,支援變量:
| 變量 | 含義 | 範例輸出 | 典型用途 |
|---|---|---|---|
DOCUMENT_NAME | 當前文檔文件名 | index.html | 面包屑、版權年份 |
DOCUMENT_URI | 當前文檔虛擬路徑 | /products/list.html | 動態構建完整 URL、分享鏈接 |
QUERY_STRING_UNESCAPED | 未轉義查詢字符串 | id=123&cat=web | 表單回填、分頁保持參數 |
DATE_LOCAL | 伺服器本地時間 | Friday, 12-Apr-2024 14:30:05 CST | 頁面時間戳、緩存驗證 |
DATE_GMT | 格林威治時間 | Friday, 12-Apr-2024 06:30:05 GMT | 跨時區同步、API 時間戳 |
LAST_MODIFIED | 當前文檔最後修改時間 | Wednesday, 10-Apr-2024 10:15:00 CST | 頁腳「最後更新」、HTTP 緩存驗證 |
HTTP_USER_AGENT | 客戶端 UA | Mozilla/5.0... | 條件輸出、統計分析 |
REMOTE_ADDR | 客戶端 IP | 203.0.113.45 | 訪問控制、地理定位 |
<a href="https://example.com<!--#echo var="DOCUMENT_URI" -->">
分享本頁
</a>
<!-- layout.shtml -->
<!DOCTYPE html>
<html>
<head><title><!--#echo var="PAGE_TITLE" --></title></head>
<body>
<!--#include virtual="/includes/header.html" -->
<main>
<!--#include virtual="/content/<!--#echo var="CONTENT_FILE" -->" -->
</main>
<!--#include virtual="/includes/footer.html" -->
</body>
</html>
每個內容頁僅需:
<!-- product-a.shtml -->
<!--#set var="PAGE_TITLE" value="產品 A 詳情" -->
<!--#set var="CONTENT_FILE" value="product-a.html" -->
<!--#include virtual="/layout.shtml" -->
<!--#include virtual="/cgi-bin/auth_check.cgi?action=banner" -->
<!-- auth_check.cgi 根據登錄狀態輸出不同 banner HTML -->
/content/cache/。<!--#include virtual="/content/cache/article-123.html" -->include virtual 路徑以 / 開頭表示網站根,**非**文件系統根目錄。.html 或 .inc 結尾,配合 <Files ~ "\.inc$"> Order allow,deny Deny from all </Files> 防止直接訪問。XBitHack off 便於即時預覽,生產環境 on 提升效能。