网站包含功能Apache SSI 教程.docx

上传人:b****6 文档编号:13087138 上传时间:2023-06-10 格式:DOCX 页数:24 大小:157.89KB
下载 相关 举报
网站包含功能Apache SSI 教程.docx_第1页
第1页 / 共24页
网站包含功能Apache SSI 教程.docx_第2页
第2页 / 共24页
网站包含功能Apache SSI 教程.docx_第3页
第3页 / 共24页
网站包含功能Apache SSI 教程.docx_第4页
第4页 / 共24页
网站包含功能Apache SSI 教程.docx_第5页
第5页 / 共24页
网站包含功能Apache SSI 教程.docx_第6页
第6页 / 共24页
网站包含功能Apache SSI 教程.docx_第7页
第7页 / 共24页
网站包含功能Apache SSI 教程.docx_第8页
第8页 / 共24页
网站包含功能Apache SSI 教程.docx_第9页
第9页 / 共24页
网站包含功能Apache SSI 教程.docx_第10页
第10页 / 共24页
网站包含功能Apache SSI 教程.docx_第11页
第11页 / 共24页
网站包含功能Apache SSI 教程.docx_第12页
第12页 / 共24页
网站包含功能Apache SSI 教程.docx_第13页
第13页 / 共24页
网站包含功能Apache SSI 教程.docx_第14页
第14页 / 共24页
网站包含功能Apache SSI 教程.docx_第15页
第15页 / 共24页
网站包含功能Apache SSI 教程.docx_第16页
第16页 / 共24页
网站包含功能Apache SSI 教程.docx_第17页
第17页 / 共24页
网站包含功能Apache SSI 教程.docx_第18页
第18页 / 共24页
网站包含功能Apache SSI 教程.docx_第19页
第19页 / 共24页
网站包含功能Apache SSI 教程.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

网站包含功能Apache SSI 教程.docx

《网站包含功能Apache SSI 教程.docx》由会员分享,可在线阅读,更多相关《网站包含功能Apache SSI 教程.docx(24页珍藏版)》请在冰点文库上搜索。

网站包含功能Apache SSI 教程.docx

网站包含功能ApacheSSI教程

ApacheSSI教程

本文参照的系统环境:

●WindowsXPSP2

●ApacheHTTPServerv2.0.55(Win32)

什么是SSI?

SSI(ServerSideIncludes),是嵌套在HTML网页中的指示语句,由后台服务器进行代码的解释计算。

使用SSI可以动态的创建一部分网页内容而不需要编写复杂的JSP/ASP/PHP等程序。

SSI是如此的小巧以至于不应算作一门语言,因为他远没有JSP/ASP/PHP等程序那么复杂,只有一些极其有限的语法规则。

但就算是只有这有限的一点语法规则,只要开动起你创新的思维,仍然可以“小才大用”,为你带来效率的提高、体力的节省和脑力的放松

很多HTTPServer程序都支持SSI,可能语法稍有不同,比如:

IIS/NovellHTTPServer等等,大同小异,本文要说明的是Apache2.0的SSI。

闲话少说,我想告诉大家的是,这是一篇实践经验总结性的文章,后文中的示例解决方案都是来自实际的网站应用中。

其中的一些想法和概念会给你带来提示性的参考或者直接拿为所用。

下图展示了SSI被服务器解释,生成最终的纯HTML网页后,再发送给访问者浏览的过程:

图1

系统环境安装

这不是一篇教你如何配置Apache的文章,但为了在你在本地系统环境测试的方便,还是简单的说明一下。

首先可以到http:

//www.apache.org/网站去下载一份最新的Apache安装文件,安装之后是否要做其他设置请自行参考相关资料,这里只说明如何开启SSI支持的步骤。

我在本地创建了一个bnn的文件夹,设成虚拟目录,然后就可以通过浏览器访问:

http:

//localhost/bnn/

打开Apache的配置文件,例如:

C:

\ProgramFiles\ApacheGroup\Apache2\conf\httpd.conf

然后加入类似下面的这段代码(主要是中间的三行):

黑体字部分是文件夹路径。

/Works/Jan-Boy/bnn">

AddTypetext/html.ssi

OptionsIncludes

AddOutputFilterByTypeINCLUDES;DEFLATEtext/html

OK,“Restart”ApacheServer(如果右下角系统栏中有apache小图标,则左键点击选择Restart;也可以在“开始->程序”菜单的Apache项下面找到Restart命令;还可以直接在安装目录运行C:

\ProgramFiles\ApacheGroup\Apache2\bin\ApacheMonitor.exe后点击Restart按钮)。

测试SSI是否已经打开,在bnn文件夹下面新建一个index.html文件,打开后在里面写上:

--#echovar="DATE_LOCAL"-->

保存关闭,然后打开浏览器测试:

http:

//localhost/bnn/

如果正确的显示出类似“Wednesday,01-Mar-200602:

03:

06ChinaStandardTime”这样的文字就表示SSI开启成功!

“呼~~”深呼一口气,搞掂,收工!

开始SSI

参考资源

在正式开始之前,先介绍两个官方参考文档:

ApacheTutorial:

IntroductiontoServerSideIncludes

http:

//httpd.apache.org/docs/2.0/howto/ssi.html

ApacheModulemod_include

http:

//httpd.apache.org/docs/2.0/mod/mod_include.html

这些文档在Apache的安装文件夹中可以找到,然后通过HTTP进行访问,并提供多国语言版本,不过没有中文(已经习惯了,谁让CN常常是被忽视的小弱国呢~,不过似乎网上流传了英雄好汉们翻译过的部分内容)。

在官方网站上可以找到最新版的文档(包括更新测试版的文档):

http:

//httpd.apache.org/docs-project/

SSI语法

SSI指令的语法格式:

--#elementattribute=valueattribute=value...-->

举几个实际例子:

http:

//

--#echovar=”SERVER_NAME”var=”DOCUMENT_URI”-->

--#includevirtual=”ssi/footer.ssi”-->

--#setvar=”Protocol”value=”http”-->

SSI语句是直接嵌套在HTML页面中的,可以放置在任意的位置。

所以SSI语句前后采用HTML注释的写法,这样一旦服务器关闭了对SSI的支持,此时访问页面的话,也不会直接在网页上显示出不必要的代码。

参见语法格式图示:

图2

注意:

1.在结尾符号“-->”的前面需要有一个空格,是不能丢掉的,曾经在一个复杂的页面中遇到一个问题是因为没有加上那个空格引起的,因为很多时候容易忽略到这个小问题,而往往最难纠错的就是这些小问题引起。

2.SSI不区分大小写,包括元素名称、变量名称,大写和小写都是允许的。

良好的书写格式可以帮助你更好的调试代码,清晰易查找,特别是在写非常复杂的SSI的时候,因为没有软件工具可以自动对SSI语句进行排版(因为大多数工具会把SSI语句当作普通的HTML注释处理,Dreamweaver只能识别include元素的SSI指令语句),所以就需要在书写的时候自己整理代码,养成良好习惯,注意大小写和上下文的缩进关系等。

书写格式的约定(推荐格式,并非强制):

●元素和属性使用小写字母;

●环境变量都使用大写字母;

●合理的缩进,在使用if语句嵌套的时候推荐使用1tab(占4space)缩进,以变更清晰的显示层次关系。

SSI使用

对于SSI具体的使用是否有些不清楚呢?

下面列出一份完整的示例代码:

DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//www.w3.org/1999/xhtml">

LearningApacheSSI

--#includevirtual="/bnn/ssi/header.ssi"-->

LeftNavigation

RightNavigation

Thisis"

//

--#echovar='SERVER_NAME'-->">LearningApacheSSI"testingpage!

HelloSSI

Todayis:

--#echovar="DATE_LOCAL"-->

--#includevirtual="ssi/footer.ssi"-->

说明:

1.SSI可以插入在网页的任意地方;

2.属性值要合理使用双引号和单引号,例如“

--#echovar='SERVER_NAME'-->”这个位置,大多数情况下,SERVER_NAME使用双引号不会出现问题,但在一些复杂的网页里面仍然会造成歧义,Apache无法识别正确的引号配对匹配。

变量和数据类型

SSI中的变量分为自定义变量和环境变量。

自定义变量使用set命令来创建:

--#setvar=”Protocol”value=”http”-->

说明:

var属性值就是变量名称;value的属性值就是变量值。

上面的语句表示,创建了一个“Protocol”的变量,变量所代表的值是“http”。

环境变量是系统已经存在的一些默认的变量和变量值,可以直接使用。

例如:

--#echovar=”DATE_LOCAL”-->

说明:

DATE_LOCAL就是一个环境变量,用来显示当前本地时间。

类似的环境变量还有很多,比如常用HTTP_HOST、SERVER_NAME、DOCUMENT_URI、DOCUMENT_NAME等等。

想知道到底有多少个可以用的环境变量么?

很简单的方法:

--#printenv-->

说明:

printenv命令就是这个作用,将所有的环境变量和变量当前值列表出来。

我们把上面的一行代码放入到任意一个页面中,然后通过浏览器访问这个页面:

图3

看到的很乱页面,查看源代码吧:

哦,原来是一个纯文本格式的,每行第一个等号前面的是环境变量名称,后面就是他所代表的字符串值。

HTTP_ACCEPT=*/*

HTTP_ACCEPT_LANGUAGE=en-us,zh-cn;q=0.5

HTTP_USER_AGENT=Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR2.0.50727;.NETCLR1.1.4322)

HTTP_HOST=localhost

HTTP_CONNECTION=Keep-Alive

HTTP_COOKIE=dbx-postmeta=grabit=2+,5+,6-,1-,4-,3-,0-&advancedstuff=0-,1-,2-

PATH=C:

\ProgramFiles\ThinkPad\Utilities;C:

\WINDOWS\system32;C:

\WINDOWS;C:

\WINDOWS\System32\Wbem;C:

\ProgramFiles\IBM\InfoprintSelect;C:

\ProgramFiles\ATITechnologies\ATIControlPanel;C:

\ProgramFiles\QuickTime\QTSystem\;C:

\ProgramFiles\ThinkPad\ConnectUtilities

SystemRoot=C:

\WINDOWS

COMSPEC=C:

\WINDOWS\system32\cmd.exe

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

WINDIR=C:

\WINDOWS

SERVER_SIGNATURE=<address>Apache/2.0.55(Win32)PHP/5.1.1ServeratlocalhostPort80</address>

SERVER_SOFTWARE=Apache/2.0.55(Win32)PHP/5.1.1

SERVER_NAME=localhost

SERVER_ADDR=127.0.0.1

SERVER_PORT=80

REMOTE_ADDR=127.0.0.1

DOCUMENT_ROOT=D:

/Works/Jan-Boy

SERVER_ADMIN=admin@

SCRIPT_FILENAME=D:

/Works/Jan-Boy/bnn/printenv.html

REMOTE_PORT=2529

GATEWAY_INTERFACE=CGI/1.1

SERVER_PROTOCOL=HTTP/1.0

REQUEST_METHOD=GET

QUERY_STRING=

REQUEST_URI=/bnn/printenv.html

SCRIPT_NAME=/bnn/printenv.html

DATE_LOCAL=Thursday,02-Mar-200611:

15:

45ChinaStandardTime

DATE_GMT=Thursday,02-Mar-200603:

15:

45GMT

LAST_MODIFIED=Wednesday,01-Mar-200610:

02:

13ChinaStandardTime

DOCUMENT_URI=/bnn/printenv.html

USER_NAME=<unknown>

DOCUMENT_NAME=printenv.html

数据类型:

SSI中只有一种数据类型“字符串”。

例如:

--#setvar=”MyFirstVar”value=”120”-->

--#setvar=”MySecondVar”value=”20”-->

说明:

上面的语句表示MyFirstVar变量代表的值是字符串“120”,而不是数字120;MySecondVar等于字符串“20”。

这样,如果对这两个变量进行大小比较,MySecondVar要大于MyFirstVar,因为字符串之间的大小比较是从左到右逐个字符比较,每个字符比较按照字符在ASCII码的先后顺序,后面的大于前面的;例如上面的例子,“2”大于“1”所以字符串“20”大于“120”。

SSI常用元素

SSI的元素并不多,下面列出常用的元素和属性,其它请查看官方参考。

echo

作用:

将变量值写入HTML代码中。

属性:

●var–值是变量名称

示例:

--#echovar=”DATE_LOCAL”-->

http:

//

--#echovar=”SERVER_NAME”var=”DOCUMENT_URI”-->

说明:

1.echo元素允许同时有多个var属性,这样在输出的时候会将这两部分字符串连起来。

2.var后面的属性值就是变量名称。

include

作用:

将另一个文件的内容写入语句所在的页面。

include是SSI中最常用的命令,也是SSI主要功能的体现。

属性:

●virtual–被包含文件的路径

示例:

--#includevirtual="ssi/header.ssi"-->

--#includevirtual="/cgi-bin/ap/optin_cn.pl?

btn=send&fax=yes"-->

说明:

1.值不不可以包含主机名,只能是一个路径;

2.路径可以是相对当前文件(SSI语句所在的页面)或者从“/”开始,相对网站根目录的路径;

3.路径后允许加参数,比如:

“/cgi-bin/ap/optin_cn.pl?

btn=send&fax=yes”,这句表示:

/cgi-bin/ap/optin_cn.pl是具体的perl脚本执行文件,?

btn=send&fax=yes是参数,参数是从在文件名后接一个问号开始,后面如果有多个参数,每个参数之间使用&号连接。

示例语句包括了2个参数btn=send和fax=yes。

参数传递给脚本文件执行后生成HTML代码,再返回到SSI语句所在的页面。

4.SSI是允许嵌套的;例如,假设有三个文件,文件1include文件2,文件2中include文件3。

set

作用:

设置(创建/修改)变量和变量值

属性:

●var–变量名

●value–变量值

示例:

--#setvar=”Protocol”value=”http”-->

说明:

1.变量值都是字符串类型

2.如果要给一个变量值设为“”IBM””(注意,IBM前后有英文字符的双引号),有两种方法:

方法一:

--#setvar="MyVar"value='"IBM"'-->

方法二:

--#setvar="MyVar"value="\"IBM\""-->

引号是特殊字符,如果直接写在代码中会出现歧异,比如写成

--#setvar="MyVar"value=""IBM""-->后,服务器并不能判断到底哪两个双引号是配对的匹配。

所以就要避免这种写法;方法一,外面用单引号,里面用双引号,这样引号配对问题就解决了,很方便。

方法二,使用了转义字符来避免这个问题。

反斜杠(\)是转义字符,将特殊字符转换成原本的字符含义。

3.如何让一个变量值等于另一个变量值?

请看示例:

结果是,MyVar2和MyVar1的变量值相同;就是说要在SSI语句中引用一个变量,使用$符号后面加上变量名。

--#setvar=”MyVar1”value=”IBM”-->

--#setvar=”MyVar2”value=”$MyVar1”-->

--#echovar=”MyVar2”-->

4.继续上个例子,假设有3个变量,第三个变量值是前两个变量值相连:

参看下面的例子,很清晰,为了正确表示一个变量名,我们使用大括号把变量名称括起来,例如:

${MyVar1}。

--#setvar=”MyVar1”value=”IBM”-->

--#setvar=”MyVar2”value=”Services”-->

--#setvar=”MyVar3”value=”${MyVar1}${MyVar1}”-->

--#echovar=”MyVar3”-->


--#setvar=”MyVar3”value=”abc${MyVar1}_${MyVar1}def”-->

--#echovar=”MyVar3”-->

5.仍然继续这个例子,要在页面上显示$IBM该如何写呢?

使用转义字符“\”反斜杠。

--#setvar=”MyVar1”value=”IBM”-->

--#setvar=”MyVar2”value=”\$MyVar1”-->

--#echovar=”MyVar2”-->

6.另一个把变量写在SSI语句中的例子:

--#includevirtual="/servers/eserver/${cc}/ssi/nav_left.ssi"-->

fsize和flastmod

作用:

显示指定文件的大小(fsize)和指定文件的最后修改时间(flastmod)

属性:

●virtual–与元素include中的属性相同,不同的是:

--#fsizevirtual=”/cgi-bin/cmail.pl”-->结果返回的是这个Perl脚本文件的大小,而不是运行这段Perl脚本的结果。

SSI配置元素

config

作用:

配置一些SSI运行结果;错误信息、文件大小格式、时间格式。

属性:

●errmsg–当SSI语句运行出错时显示的信息。

例如:

--#configerrmsg="出错啦~~"-->

●sizefmt–显示以何种方式显示文件大小。

这个属性有两个值:

bytes和abbrev。

例如:

--#configsizefmt="abbrev"-->

✓bytes:

按照bytes大小显示;

✓abbrev:

按照bytes、Kb或者Mb动态显示。

●timefmt–显示时间的格式。

属性值的参数同C标准库中的strftime(3)相同;参看其他的时间格式符:

http:

//www.opengroup.org/onlinepubs/007908799/xsh/strftime.html

这里有篇中文说明:

例如:

--#configtimefmt="%Y-%m-%d"-->

示例:

--#configtimefmt="%Y-%m-%d"-->

--#echovar=’LAST_MODIFIED’-->">

说明:

上例中是个实际的例子,这样在每次编辑页面后,不再需要手动更改DC.DATE的meta了。

其他配置

SSI语句中的前置符和后置符,错误提示,时间显示格式等等也可以在Apache的配置文件中进行配置。

具体的说明参看:

http:

//httpd.apache.org/docs/2.0/mod/mod_include.html

文中Directives部分。

流控制元素

条件语句

SSI中只有条件语句一种结构,而且结构很简单。

基本的控制元素:

--#ifexpr="test_condition"-->

Blablabla~~

--#elifexpr="test_condition"-->

Blablabla~~

--#else-->

Blablabla~~

--#endif-->

说明:

●如果(if行)expr属性中的条件成立(为真)则执行下面语句部分(if和elif之间,可以是HTML代码,也可以是其他任意SSI语句)。

否则继续elif中expr条件判断,同样。

如果以上2个条件均不成立则执行else和endif之间的部分代码。

●elif行可以有若干行;也可以没有elif。

●else行根据实际情况也可以没有。

●第一行和最后一行必须存在。

●if语句可以嵌套,你可以在if块中再加入一个if块语句。

操作符

上例中test_condition可以是以下情况:

●string–如果只是非空字符,则返回真,条件成立。

例如:

--#ifexpr="IBM"-->表示条件成立;

--#ifexpr=""-->空字符,返回假,条件不成立。

判断一个变量是否为空字符串的一种写法:

--#ifexpr="$MyVar=‘’"-->

●string1=string2–两个字符串相同则为真,不同则为假。

string1!

=string2–两个字符串不同则为真,相同则为假。

例如:

如果变量$DOCUMENT_URI值等于/bnn/index.html则为真,否则不成立。

string2也可以是正则表达式,将在下一节讲述。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2