Apache下開啟SSI配置使html支持include包含的方法
寫頁面的同學(xué)通常會(huì)遇到這樣的煩惱,就是頁面上的 html 標(biāo)簽越來越多的時(shí)候,尋找指定的部分就會(huì)很困難,那么能不能像 javascript 一樣寫在不同的文件中引入呢?答案是有的,apache 能做到。
舉個(gè)簡單的例子,比如有如下的 html 文件(命名為 index.html):
<input type='text' /> <input type='button' value='press' />
一個(gè)簡單的文本框和按鈕,我現(xiàn)在想把按鈕部分的 html 寫在另一個(gè) .html 的文件中(比如說叫 btn.html)然后引入到 index.html 中,要怎么做呢?
1、加載 ssi 模塊
首先要加載 ssi 模塊。打開 apache 的配置文件 httpd.conf,這個(gè)文件應(yīng)該都已經(jīng)很熟悉了,前面的文章中多次提到。找到這么一行 LoadModule ssl_module modules/mod_ssl.so,把前面的注釋(#)去掉。
2016.01.11 更:
經(jīng)本地測(cè)試,此步驟并不是必須的,多謝 whuper 指出。
2、添加需要的文件類型
同樣在 httpd.conf 文件下找到如下兩行代碼:
AddType text/html .shtml AddOutputFilter INCLUDES .shtml
有注釋的話一樣去掉注釋。因?yàn)槭褂?ssi 技術(shù)的默認(rèn)文件名為 .shtml,所以我們需要在配置文件中對(duì) .shtml 后綴名進(jìn)行設(shè)置,并按自己的需求設(shè)置需要對(duì) ssi 技術(shù)進(jìn)行解析的文件類型設(shè)置。
比如這里我要用 .html 的文件進(jìn)行操作,所以可以在上面兩行代碼末添加,比如這樣:
AddType text/html .shtml .html AddOutputFilter INCLUDES .shtml .html
3、添加 INCLUDES
還是在 httpd.conf 文件中,找到這樣一行 Options Indexes FollowSymLinks,在后面添加 INCLUDES,變成這樣:
Options Indexes FollowSymLinks INCLUDES
需要注意的是,ssi 可以利用 shell 來執(zhí)行命令,因此這個(gè)功能是有危險(xiǎn)的,它會(huì)執(zhí)行任何包含在 exec 標(biāo)記中的命令,如果你的用戶有權(quán)限修改你的網(wǎng)頁內(nèi)容,建議把該功能關(guān)閉。當(dāng)然你還可以加上IncludesNOEXEC 參數(shù),來關(guān)閉 exec 功能,同時(shí)又保留 SSI 。此時(shí)改為: Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC
4、重啟 apache
最后一點(diǎn),重啟 apache 千萬不能忘記,有些童鞋剛開始配置 apache 的時(shí)候,經(jīng)常會(huì)說怎么不起作用啊,很多時(shí)候就是忘記重啟了。
5、實(shí)踐
通過這樣的配置我們就能在 html 頁面中引入 html 文件了,比如這樣:
<input type='text' /> <!--#include virtual="btn.html" -->
也可以用 file 參數(shù):
<input type='text' /> <!--#include file="btn.html"-->
有什么區(qū)別呢...
include 元素能按 file 屬性或 virtual 屬性判斷應(yīng)該包含的文件。file 屬性是一個(gè)相對(duì)于當(dāng)前目錄的文件路徑,即不能是一個(gè)絕對(duì)路徑(以 "/" 開頭)或包含 "../" 的路徑,也就是說被包含文件可以在同一級(jí)目錄或其子目錄中,但不能在上一級(jí)目錄中。virtual 屬性可能更有用,它是一個(gè)相對(duì)于被提供的文檔的URL ,可以以 "/" 開頭,但必須與被提供的文檔位于同一服務(wù)器上,virtual 文件名是 Web 站點(diǎn)上的虛擬目錄的完整路徑。
通俗地說,virtual 相當(dāng)于絕對(duì)路徑(從服務(wù)器根目錄出發(fā)),而 file 相當(dāng)于相對(duì)路徑(而且文件還不能在上級(jí)目錄)。所以一般用 virtual 就 ok 了。
參考:
相關(guān)文章
Linux平臺(tái)和Windows平臺(tái)互傳文件的實(shí)現(xiàn)方法
本文講述了在Linux主機(jī)與windows主機(jī)之間如何互傳文件的方法,因?yàn)橛袝r(shí)linux主機(jī)中的一些文件可能會(huì)在windows環(huán)境下用到,所以文章給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2024-05-05
linux系統(tǒng)中通過rsync+inotify實(shí)現(xiàn)網(wǎng)頁自動(dòng)同步
這篇文章主要介紹了linux系統(tǒng)中通過rsync+inotify實(shí)現(xiàn)網(wǎng)頁自動(dòng)同步,需要的朋友可以參考下2014-11-11
linux手動(dòng)、自動(dòng)更改網(wǎng)卡MAC地址的方法
這篇文章主要給大家介紹了關(guān)于linux如何手動(dòng)、自動(dòng)更改網(wǎng)卡MAC地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
詳解把Node.js項(xiàng)目部署到阿里云服務(wù)器(CentOs)
本篇文章主要介紹了把Node.js項(xiàng)目部署到阿里云服務(wù)器,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04
CentOS7安裝GUI界面及遠(yuǎn)程連接的實(shí)現(xiàn)
這篇文章主要介紹了CentOS7安裝GUI界面及遠(yuǎn)程連接的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法
這篇文章主要介紹了CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法,結(jié)合實(shí)例形式分析了rsync進(jìn)行文件同步備份操作的相關(guān)命令與使用技巧,需要的朋友可以參考下2018-04-04
新裝linux系統(tǒng)/etc/sysconfig目錄下無iptables文件的解決方法
下面小編就為大家?guī)硪黄卵blinux系統(tǒng)/etc/sysconfig目錄下無iptables文件的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Linux學(xué)習(xí)第一篇 虛擬機(jī)和鏡像文件安裝配置
這篇文章主要為大家詳細(xì)介紹了Linux學(xué)習(xí)第一篇,虛擬機(jī)和鏡像文件安裝配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

