Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 與 Apache 啟用 SSI (Server Side Includes) 支援 .shtml/.shtm 完整配置指南

編輯:關於伺服器

Server Side Includes (SSI) 允許在靜態 HTML 中嵌入動態指令 (檔案包含、變數輸出、條件判斷、CGI 執行結果),是輕量級動態內容技術。本文提供 IIS 5/6/7+ 及 Apache 啟用 .shtml/.shtm 副檔名對應的標準化配置步驟。

IIS 配置步驟 (以 IIS 6/7 為例)

1. 確認 SSI 模組已安裝

  • IIS 6:控制台 → 新增/移除程式 → 新增/移除 Windows 元件 → 應用程式伺服器 → Internet Information Services (IIS) → 核心檔案 → 勾選 伺服器端包含。
  • IIS 7+:伺服器管理員 → 角色服務 → 伺服器端包含 (Server-Side Includes)。

2. 建立副檔名對應 (處理常式對應)

  1. IIS 管理員 → 目標網站 → 處理常式對應 (IIS 7+) 或 主目錄 → 配置 → 應用程式對應 (IIS 6)。
  2. 新增受管理處理常式 / 應用程式擴充對應:
      • 請求路徑:*.shtml (另建 *.shtm)
      • 執行檔/模組:C:\Windows\System32\inetsrv\ssinc.dll (IIS 6/7 共用)
      • 動詞:GET,HEAD,POST (限於安全動詞)
      • 名稱:SSI-shtml
  3. 確定 → 若提示「允許此 ISAPI 延伸模組」,選 是。

3. 啟用目錄層級 SSI 執行權限

  • IIS 6:網站/虛擬目錄內容 → 主目錄 → 執行權限:僅腳本 或 腳本與執行檔。
  • IIS 7+:目標路徑 → 處理常式對應 → 編輯功能權限 → 勾選 腳本。

Apache httpd.conf 配置

# 1. 載入模組 (通常預設已載入)
LoadModule include_module modules/mod_include.so

# 2. 設定副檔名對應
AddType text/html .shtml .shtm
AddOutputFilter INCLUDES .shtml .shtm

# 3. 目錄層級啟用 SSI (在對應 <Directory> 或 .htaccess)
Options +Includes
# 或完整寫法
Options Indexes FollowSymLinks Includes

# 4. 可選:設定 SSI 指令標籤格式 (預設 <!--# -->)
# SSIStartTag "<!--#"
# SSIEndTag "-->"

常用 SSI 指令速查

指令語法範例說明
檔案包含<!--#include virtual="/inc/header.html" -->virtual 相對網站根目錄;file 相對當前檔案 (不支援跨目錄)
變數輸出<!--#echo var="DATE_LOCAL" -->常用變數:DATE_LOCAL, DATE_GMT, DOCUMENT_NAME, DOCUMENT_URI, LAST_MODIFIED
檔案大小/修改時間<!--#fsize virtual="/file.pdf" -->
<!--#flastmod virtual="/file.pdf" -->
自動格式化輸出
條件判斷<!--#if expr="${QUERY_STRING} = /test/" -->...<!--#endif -->支援正則、字串比較、邏輯運算
執行 CGI/程式<!--#exec cmd="ls -la" --> (需 Options +ExecCGI)高風險,生產環境建議禁用

安全性最佳實踐

  • 嚴格限制副檔名:僅 .shtml/.shtm 開啟 SSI,禁止 .html/.htm 執行 SSI (避免誤執行、效能損耗)。
  • 禁用 exec 指令:Apache Options IncludesNOEXEC、IIS 確保 ssinc.dll 不處理 #exec (預設即禁用)。
  • 輸出編碼:確保 SSI 輸出內容經過 HTML 編碼,防止 XSS (Apache SSIUndefinedEcho 設定預設值)。
  • 快取策略:SSI 頁面通常不快取或短快取,設定 Cache-Control: max-age=60, must-revalidate。

驗證測試頁面

建立 test.shtml:

<!DOCTYPE html>
<html><head><title>SSI Test</title></head><body>
<h1>SSI 測試頁面</h1>
<p>目前時間:<!--#echo var="DATE_LOCAL" --></p>
<p>檔案名稱:<!--#echo var="DOCUMENT_NAME" --></p>
<p>包含頁尾:<!--#include virtual="/inc/footer.html" --></p>
</body></html>

瀏覽 https://your-site/test.shtml,確認變數輸出與包含檔案正常顯示。

現代替代:邊緣端包含 (ESI - Edge Side Includes) 於 CDN/Varnish/Nginx 層組裝片段、前端框架 (React/Vue/Svelte) 組件化、靜態站點生成器 (Hugo/Next.js/Astro) 部分預渲染。SSI 仍適用於舊系統維護、極簡部署環境、邊緣計算節點輕量組裝場景。
Copyright © Windows教程網 All Rights Reserved