发新话题
打印

[资料] shtml网页SSI使用详解

shtml网页SSI使用详解

shtml使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。& J5 L7 |$ |5 e, y  U0 ~/ R8 U

$ q+ X- X+ r5 h' q0 s! m0 E      1、Config命令 % |" h" `. m  w- S, |2 l- S
0 o  O, C1 u5 {* w) D
  Config命令主要用于修改SSI的默认设置。其中: / Q; u$ f: \2 [) M2 R
9 u. C  w6 g& ~5 k7 B: X3 p
  Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。
  R6 o' p* I: h, e8 t
* \$ p- [6 t" Z* M* P7 {1 v* W  <!--#config errmsg="Error! Please email webmaster@web.com -->  
9 R4 N2 r$ d8 F! E9 i6 }
+ i* d/ p( h4 Q8 F7 ?6 l9 }9 b  Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。
复制内容到剪贴板
代码:
<!--#config timefmt="%A, %B %d, %Y"-->
  <!--#echo var="LAST_MODIFIED" -->
显示结果为:
8 u/ H% F  f* ^+ k/ w  A; e) \' G4 s' F- D4 `; n3 c' h
    Wednesday, April 12, 2007    l) o, ?  s5 w+ y  c) M9 |
- ^+ B% ~+ Y9 T) J$ L
  也许用户对上例中所使用的%A %B %d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。
7 j: ~3 h0 v  y5 A' X" H# F3 g7 Q& g0 g5 X& s$ J
  Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为"bytes";对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。
复制内容到剪贴板
代码:
 <!--#config sizefmt="bytes" -->
    <!--#fsize file="index.html" -->
2、Include命令
2 ~2 M9 }  `3 P4 e+ x' [
4 H( ~# p1 Q; T( G! b( |" B$ z  Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!
, {) S" K1 n" g0 h2 i
/ J& t9 `  [7 y  Include命令具有两个不同的参数:
* s5 ~  v5 q0 k# P; @5 P8 c
  `# x) @: |2 }& \  Virtual:给出到服务器端某个文档的虚拟路径。例如: 7 O; {3 U: H" W# q" F+ P
* X! P5 }0 L( h; y; `/ y
    <!--#include virtual="/includes/header.html" -->  8 o: E5 C4 {; |9 D
3 F9 j8 F, O/ e0 t
  File:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径。例如:
* j# z' o  o& _) \% R
3 P6 p) n% F; e7 P    <!--#include file="header.html" --> 9 x+ ?8 i, p7 I. f
) L9 T1 u: z2 {, o2 J* C: |9 R% Z, X
  这就要求每一个目录中都包含一个header.html文件。 + R: s+ d( D7 k5 O' F6 L# R2 ?
# i  Q9 ^" ]) R+ Q- ?
  3、Echo命令
5 }# t" [) x- T8 u2 [8 R! N& ]3 B& U
  Echo命令可以显示以下各环境变量:' N! s" K% K! Z9 U' i0 s! e
. q0 h+ D( U. E1 D& c1 p% D, o4 P3 g
  DOCUMENT_NAME:显示当前文档的名称。4 _( o: \  p5 g, L; r5 C

6 ~! l. L1 @, b% c    <!--#echo var="DOCUMENT_NAME" --> 8 S5 q! ~" b" h0 \7 o0 E* i5 d) k

9 N- B2 I: S+ s4 D/ ?. d      显示结果为:( V" Z; ?4 V! B: y9 v
4 s" g" R- V7 L& J( K
    index.html
4 H5 O* ]% l0 U3 J; ?7 V/ z6 H) g3 C. X) ~  v! G4 J- u
  DOCUMENT_URI:显示当前文档的虚拟路径。例如:" `# }; R3 U9 n1 |* w1 Z

9 r* e, i6 g, c    <!--#echo var="DOCUMENT_URI" -->
8 s: s3 Q0 t% `- w/ ~0 S0 z! q" {9 }  J& w& ~
  显示结果为: & f' O; M, j: X0 V

, a- |" I2 z4 H4 ?    /YourDirectory/YourFilename.html  
( d" j3 {$ R9 i/ D/ B
8 K' F1 E  M, ~  I9 F  随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即: ( c2 G; G7 Q! V& f- ~- s! W
; D1 I3 [( G- U: D! l* h
  http://YourDomain<!--#echo var="DOCUMENT_URI" -->  : f% H$ Z( }/ I' H- T- P
6 i7 @* j4 Q' A2 @% v, I6 r1 q
  QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符"\"。例如: 2 N9 F/ e' Y6 l" e

7 `) U& z1 W! s2 Z+ P3 F  <!--#echo var="QUERY_STRING_UNESCAPED" -->
* q1 I6 ~* f, V1 U1 l
1 D- O" {; j8 ~  DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如: 5 Y/ Z0 j1 v% K$ U2 P

: G5 X' s6 ?' L& A6 W  <!--#config timefmt="%A, the %d of %B, in the year %Y" -->
' A* g5 S% }" d9 G3 {1 E7 ]1 K    <!--#echo var="DATE_LOCAL" -->
# K; Z* ?$ ?1 _; ?/ b" O  r
" @6 Y4 ?" f% O$ Y  显示结果为: & [, a: l" Y2 L1 b
. C' k- D# g7 k, D, [3 C
  Saturday, the 15 of April, in the year 2007 ) l, [+ H, a' J/ z# |/ O) J5 f% y

8 Z0 k4 U( t, d& R2 z5 u. I2 ?  DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:
+ k; Q0 H. m+ V3 `2 b5 D
- s# x' M- |4 r  <!--#echo var="DATE_GMT" --> 4 T# J6 |/ I( q$ H6 f, t( a
$ \% f! c" O/ e7 m
  LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。
( Y9 v; @( F- ]5 x9 c0 ^' \# P# V! e, g9 I# I
  <!--#echo var="LAST_MODIFIED" --> ; N' R4 m6 c# z) m5 A) m

0 j' e& E9 n4 q$ v' n5 ^  CGI环境变量
/ u6 b& J  `0 ?$ c- x
( j! K7 A5 g& Z0 n/ K; F  除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量: , {3 z: t" }, e9 m1 L
: ]8 H9 j% m& b9 a/ V
    SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:
, s, ^  B( I8 W$ j' q    <!--#echo var="SERVER_SOFTWARE" -->
- M7 Z! L- t5 D# |) u) c$ A' J6 s    SERVER_NAME: 显示服务器的主机名称,DNS别名或IP地址。例如:$ v# P! _. \- [* U) o: G
    <!--#echo var="SERVER_NAME" -->/ y; E# c6 y, c) f  e
    SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:  a: {( ^3 z/ U+ L: x7 S
    <!--#echo var="SERVER_PROTOCOL" -->
9 j7 m+ I* D7 z7 i1 c    SERVER_PORT:显示服务器的响应端口。例如:
# Y& ?! G4 C& ?+ a5 |2 o8 n    <!--#echo var="SERVER_PORT" -->
9 [2 C* g. y7 l- u$ i    REQUEST_METHOD:显示客户端的文档请求方法,包括GET, HEAD, 和POST。例如:! \- d) K" t8 t8 L7 \
    <!--#echo var="REQUEST_METHOD" -->- h3 H* Y% S. I6 V+ ^
    REMOTE_HOST:显示发出请求信息的客户端主机名称。5 D4 V. K8 G/ r$ i4 g/ m1 @. O# ^. E
    <!--#echo var="REMOTE_HOST" -->
) F- u2 z7 o9 H2 U! G    REMOTE_ADDR:显示发出请求信息的客户端IP地址。1 G# J; v5 A, f/ X/ t
    <!--#echo var="REMOTE_ADDR" -->! d1 U  b, v# c) v  N
    AUTH_TYPE:显示用户身份的验证方法。1 G/ C* H% G* r8 y9 S5 ^1 G5 c" R1 V
    <!--#echo var="AUTH_TYPE" -->
& T8 x8 n; x5 m. K    REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。3 W: k! [0 H; A0 M7 U0 H9 V
    <!--#echo var="REMOTE_USER" -->
6 g9 e$ s" p9 h6 K
8 L$ g: X2 v5 @) t- M) _      4、Fsize:显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。
5 Q; M& r4 s( l# S& E8 U
& }5 \5 U5 k. ?% }0 z1 z    <!--#fsize file="index_working.html" -->
9 ^- Z: A  ?. u' ]
2 m6 q( p3 A5 L  d  5、Flastmod:显示指定文件的最后修改日期,可以结合config 命令的timefmt参数控制输出格式。 : `  f* q3 N: t6 x) b+ K2 E

* k. o2 c0 o7 X- [! y    <!--#config timefmt="%A, the %d of %B, in the year %Y" -->
0 D* A6 f5 W$ V' I8 F    <!--#flastmod file="file.html" -->
- ?5 W+ v: K2 W" N
" r7 g7 F4 B5 c, R& ~  B& s  W  这里,我们可以利用flastmod参数显示出一个页面上所有链接页面的更新日期。方法如下:
+ y! y$ Y0 P0 T" L
/ e/ Y2 j1 T7 n, G    <!--#config timefmt=" %B %d, %Y" -->
+ ?6 I- Y$ w# Q$ h& h    <A HREF="/directory/file.html">File</A>
0 Q" q, o: m' M3 F6 y2 Q8 M4 x    <!--#flastmod virtual="/directory/file.html" -->
1 i0 }- h1 U) b- v- m2 T+ L# y+ f    <A HREF="/another_directory/another_file.html">Another File</A>
) ]. A' Y: [& @- e8 y* K# p* ]    <!--#flastmod virtual="/another_directory/another_file.html" -->
8 o$ u, V. X' W; V
5 @& E' e+ D0 {* q0 l  显示结果为:
, E- S) h) y7 `4 D1 u; ]
- H$ W1 P7 b1 ^$ M    File April 19, 2007
% ?+ o3 h2 \  i6 l    Another File January 08, 2007  
. m" j1 Y0 |; y# y2 l% I4 C/ F" E; e( a+ ^/ A4 V" Q) n
  6、Exec
8 |9 K& u! G( J8 T, ?7 h% w5 {5 e$ {) P) O% i: H1 C$ x
  Exec命令可以执行CGI脚本或者shell命令。使用方法如下:5 f$ S- u' h; n/ M

, j0 E1 t5 }. Q4 T+ J% E   Cmd:使用/bin/sh执行指定的字串。如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。 ; u0 s1 T4 o  W# _3 u# r
/ Z# @2 h+ U( t2 a" j
   Cgi:可以用来执行CGI脚本。例如,下面这个例子中使用服务端cgi-bin目录下的counter.pl脚本程序在每个页面放置一个计数器:
7 N7 h0 ]: q5 R. _" p8 U7 w% C5 a2 _3 I2 d
   <!--#exec cgi="/cgi-bin/counter.pl" -->
赠人玫瑰,手有余香。

TOP

发新话题