以下是【技術主管:一葉知秋】分享的內容全文:
apache 開啟SSI 支持include及shtml語法配置中錯誤解決
SSI模塊,apache要使用SSI需要開啟模塊同時配置ssi支持的文件類型。
SSI的優勢,SSI是英文Server Side Includes的縮寫,翻譯成中文就是服務器端包含的意思。從技術角度上說,SSI就是HTML文件中,可以通過注釋行調用的命令或指針。SSI 具有強大的功能,只要使用一條簡單的SSI 命令就可以實現整個網站的內容更新,動態顯示時間和日期,以及執行shell和CGI腳本程序等復雜的功能。SSI 可以稱得上是那些資金短缺、時間緊張、工作量大的網站開發人員的最佳幫手。
SSI最初在NCSA服務器平臺上推出,在Apache服務器中得到擴展和加強,目前已經可以在幾乎所有的服務器上運行。
apache開啟SSI模塊,文件httpd.conf
找到:LoadModule ssl_module modules/mod_ssl.so 去掉前面的注釋符號#,讓其起作用,服務器默認是不加載該服務的

同樣在文件httpd.conf 中開啟SSI支持的文件類型,默認的是.shtml 你可以自行添加自己需要的文件類型,比如.html
搜索:AddType
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
同樣,前面的注釋符號去掉,讓其起作用,如果需要其他類型的文件,可以在.shtml后面加空格 然后添加,比如下面:
AddType text/html .shtml .html .htm
AddOutputFilter INCLUDES .shtml .html .htm

最后一步,在站點目錄配置Options 中添加支持INCLUDES 命令,有的人的站點目錄配置是直接在httpd.conf 中的,有的人是自定義文件的。
格式 Options FollowSymLinks ExecCGI INCLUDES 或者 Options +FollowSymLinks +ExecCGI +INCLUDES
這里需要注意的是,ssi可以利用shell來執行命令,因此這個功能是有危險的,它會執行任何包含在exec標記中的命令,如果你的用戶有權限修改你的網頁內容,建議把該功能關閉。當然你還可以加上IncludesNOEXEC參數,來關閉exec功能,同時又保留SSI。
格式就變為:Options FollowSymLinks ExecCGI INCLUDES IncludesNOEXEC 或者 Options +FollowSymLinks +ExecCGI +INCLUDES +IncludesNOEXEC
最后需要說明的是關于路徑報錯的處理,an error occurred while processing this directive,這是一個絕對路徑和相對路徑的沖突,處理的方法,可以直接在Directory 語句中添加SSILegacyExprParser on 語句,如下:
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI +INCLUDES +IncludesNOEXEC
AllowOverride All
Order allow,deny
Allow from all
Require all granted
SSILegacyExprParser on
</Directory>
如果仍然不行,可以把程序中調用的file換成virtual 解決路徑錯誤的問題
原:<!--#include file="top.shtml"--> 換成:<!--#include virtual="top.shtml"-->
virtual 文件名是 Web 站點上的虛擬目錄的完整路徑。如表示相對于服務器文檔根目錄下hoyi目錄下的top.shtml文件;則為virtual="/hoyi/top.shtml"
如果使用的是虛擬機不是獨立配置的服務器的設置方法,服務器需要開啟偽靜態 使用.htaccess方法設置
直接添加語句:
Options Indexes FollowSymLinks Includes
AddType application/x-httpd-CGI .CGI
AddType text/x-server-parsed-html .shtml .html
關于shtml和html 的選擇
如果只是幾個頁面使用ssi 可以考慮使用shtml,多個頁面使用的話還是建議使用html
本站不存儲任何資源文件,敬請周知!
本網站采用 BY-NC-SA 協議進行授權 轉載請注明原文鏈接:apache 開啟SSI 支持include及shtml語法配置中錯誤解決

侵權舉報/版權申訴

