书签 分享 收藏 举报 版权申诉 / 24

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

  • 文档编号:13087138
  • 上传时间:2023-06-10
  • 格式:DOCX
  • 页数:24
  • 大小:157.89KB

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也可以是正则表达式,将在下一节讲述。

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
网站包含功能Apache SSI 教程 网站 包含 功能 Apache
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:网站包含功能Apache SSI 教程.docx
链接地址:https://www.bingdoc.com/p-13087138.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


收起
展开