Apache開啟SSI(shtml)配置使html支援include的步驟

來源:互聯網
上載者:User

舉個簡單的例子,比如有如下的 html 檔案(命名為 index.html):

<input type='text' />
<input type='button' value='press' />

一個簡單的文字框和按鈕,我現在想把按鈕部分的 html 寫在另一個 .html 的檔案中(比如說叫 btn.html)然後引入到 index.html 中,要怎麼做呢?


1、載入 ssi 模組

首先要載入 ssi 模組。開啟 apache 的設定檔 httpd.conf,這個檔案應該都已經很熟悉了,前面的文章中多次提到。找到這麼一行 LoadModule ssl_module modules/mod_ssl.so,把前面的注釋(#)去掉。


2、添加需要的檔案類型

同樣在 httpd.conf 檔案下找到如下兩行代碼:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

有注釋的話一樣去掉注釋。因為使用 ssi 技術的預設檔案名稱為 .shtml,所以我們需要在設定檔中對 .shtml 尾碼名進行設定,並按自己的需求設定需要對 ssi 技術進行解析的檔案類型設定。

比如這裡我要用 .html 的檔案進行操作,所以可以在上面兩行代碼末添加,比如這樣:

AddType text/html .shtml .html
AddOutputFilter INCLUDES .shtml .html

3、添加 INCLUDES

還是在 httpd.conf 檔案中,找到這樣一行 Options Indexes FollowSymLinks,在後面添加 INCLUDES,變成這樣:

Options Indexes FollowSymLinks INCLUDES

需要注意的是,ssi 可以利用 shell 來執行命令,因此這個功能是有危險的,它會執行任何包含在 exec 標記中的命令,如果你的使用者有許可權修改你的網頁內容,建議把該功能關閉。當然你還可以加上IncludesNOEXEC 參數,來關閉 exec 功能,同時又保留 SSI 。此時改為: Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC


4、重啟 apache

最後一點,重啟 apache 千萬不能忘記,有些童鞋剛開始配置 apache 的時候,經常會說怎麼不起作用啊,很多時候就是忘記重啟了。


5、實踐

通過這樣的配置我們就能在 html 頁面中引入 html 檔案了,比如這樣:

<input type='text' />
<!--#include virtual="btn.html" -->

也可以用 file 參數:

<input type='text' />
<!--#include file="btn.html"-->

有什麼區別呢...

include 元素能按 file 屬性或 virtual 屬性判斷應該包含的檔案。file 屬性是一個相對於目前的目錄的檔案路徑,即不能是一個絕對路徑(以 "/" 開頭)或包含 "../" 的路徑,也就是說被包含檔案可以在同一級目錄或其子目錄中,但不能在上一級目錄中。virtual 屬性可能更有用,它是一個相對於被提供的文檔的URL ,可以以 "/" 開頭,但必須與被提供的文檔位於同一伺服器上,virtual 檔案名稱是 Web 網站上的虛擬目錄的完整路徑。

通俗地說,virtual 相當於絕對路徑(從伺服器根目錄出發),而 file 相當於相對路徑(而且檔案還不能在上級目錄)。所以一般用 virtual 就 ok 了。



讓Apache支援SHTML(SSI)的配置方法


shtml和asp有一些相似,以shtml命名的檔案裡,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML檔案中寫入SSI指令,當用戶端訪問這些shtml檔案時,伺服器端會把這些SHTML檔案進行讀取和解釋,把SHTML檔案中包含的SSI指令解釋出來。

伺服器採用shtml速度會比html慢,比php快。shtml的特點就是能夠進行頁麵包含,能夠局部更新頁麵包含部分。廣泛採用可以很容易解決網頁中的廣告問題,不需要更新全面靜態頁面。而只需更新一個包含頁面即可。下面我們來看看Apache解析SHTML配置(SSI)的方法:

開啟檔案,搜尋shtml


把最前兩行的#號去掉,即成如下


如是要想整個伺服器配置shtml的話

再搜尋Options Indexes FollowSymLinks


在裡面添加Includes如下所示:


OK 重啟apache

然後測試,建立兩個檔案,其實一個叫header.shtml和一個index.shtml

header.shtml代碼如下:


用了兩種形式的包含:如果想要瞭解,請找相關文檔


然後訪問:


shtml配置成功。。。很好很強大吧。

下面再說一下如是不是全域配置,而是分網站配置的話。可以如下:具體本人沒有測試過,均來源於網路。

簡說一下吧:

file 檔案名稱是一個相對路徑,該路徑相對於使用 #include 指令的文檔所在的目錄。被包含檔案可以在同一級目錄或其子目錄中,但不能在上一級目錄中。如表示目前的目錄下的的nav_head.htm文檔,則為 file="nav_head.htm"。 virtual 檔案名稱是 Web 網站上的虛擬目錄的完整路徑。如表示相對於伺服器主目錄下hoyi目錄下的nav_head.htm檔案;則為virtual="/hoyi/nav_head.htm"

以上是全域的配置,如是沒這樣寫的話


可以在單個目錄下設定:

配置虛擬目錄可以如下設定:


NameVirtualHost www.xxx.com
<VirtualHost www.xxx.com:80>
    DocumentRoot F:xing ServerName www.xxx.com
</VirtualHost>
<Directory "F:xxx">
Options Indexes FollowSymLinks
Includes AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AllowOverride None Order allow,deny Allow from all
</Directory>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.