你是否曾经或正在为如何能够在最短的时间内完成对一个包含上千个页面的网站的修改而苦恼?那么可以看一下本文的介绍,或许能够对你有所帮助。

什么是SSI?

SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是HTML文件中,可以通过注释行调用的命令或指针。SSI 具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,动态显示时间和日期,以及执行shell和CGI脚本程序等复杂的功能。SSI 可以称得上是那些资金短缺、时间紧张、工作量大的网站开发人员的最佳帮手。

SSI最初在NCSA服务器平台上推出,在Apache服务器中得到扩展和加强,目前已经可以在几乎所有的服务器上运行。本文将主要结合Apache服务器介绍SSI的使用方法。

如何启动SSI?

在Apache服务器下,可以通过直接编辑服务器配置文件或者在需要使用SSI的目录中创建.htaccess文件启动SSI。具体来说,过程如下:

1.服务器配置文件

假如用户具有对服务器配置文件的访问权限,可以通过编辑文件access.conf和srm.conf启动SSI。

首先使用Telnet远程登录服务器,找到配置文件的存放目录。一般来说,Apache服务器的配置文件都被保存在“/usr/local/etc/httpd/conf”目录下。使用任何一种文字编辑器打开文件srm.conf,找到以下几行:

# If you want to use server side includes, or CGI outside

# ScriptAliased directories, uncomment the following lines.

#AddType text/x-server-parsed-html .shtml

#AddType application/x-httpd-CGI .CGI

用户的配置文件中可能没有上述的注释指令行,但是只要找到以AddType开头的两行并且去掉每一行最前面的“#”符号即可。

保存所做的修改,然后再打开文件access.conf。用户需要在文件中找到设置DocumentRoot(根文件)的部分。一般来说该段文本如下,但是不排除和标签之间还包含其它设置内容。

# This should be changed to whatever you set DocumentRoot to.

# This may also be “None”, “All”, or any combination of “Indexes”,

Options Indexes FollowSymLinks Includes

假如用户不希望执行脚本或shell命令,可以在options选项行中加入要害字IncludesNOEXEC,这样可以答应SSI,但是不能执行CGI或脚本命令。(注:最新版本的Apache服务器只有一个配置文件httpd.conf,以上所提到的内容都已经被包含在该文件中)

2.创建文件.htaccess

假如用户不能直接访问服务器配置文件,可以使用文件编辑器创建一个名为.htaccess的文件。注重,文件名前一定要有符号“.”,这样服务器才能知道该文件是隐藏文件,从而提高文件的安全性,避免错误操作。在.htaccess文件中需要加入以下三行文字:

Options Indexes FollowSymLinks Includes

AddType application/x-httpd-CGI .CGI

AddType text/x-server-parsed-html .shtml

完成之后可以把.htaccess文件上传到服务端的相应目录,该文件对所有子目录有效。假如用户希望在目录级上禁止CGI或shell命令,可以在.htaccess文件中的Options选项行加入要害字IncludesNOEXEC。

3.使用.shtml还是.html?

任何包含SSI的文件在下传到客户端之前,都必须经过服务器的解析过程。虽然从某种程度上这样会增加服务器的负载,但是除非用户的网站天天有几百万的访问用户,某则服务器的性能不会有明显的下降。不过,假如不是需要在每个页面都使用SSI的话,确实没有必要让服务器解析每一个页面。假如用户只希望在几个非凡页面中使用SSI,可以将文件的后缀名改为.shtml,这样服务器就可以只解析包含SSI的.shtml文件。另一方面,假如有多个页面使用了SSI,但是用户不希望使用.shtml的后缀名时,可以在.htaccess文件中使用以下命令行:

AddType text/x-server-parsed-html .html

SSI语法

SSI在使用时遵循以下格式:

其中,directive是向服务器发送的指令名称,parameter是指令的操作对象,而value则是用户希望得到的指令处理结果。

所有的SSI命令都是以“

2.Include命令

Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,是整个SSI的要害所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!

Include命令具有两个不同的参数,假如使用错误的参数更新站点的话,不仅达不到初衷,反而会得到一大堆的错误信息。

Virtual:给出到服务器端某个文档的虚拟路径。例如:

为了更加合理的组织站点的内容,用户可以在根目录下创建includes子目录来存放所有的包含文件。Virtual参数可以通知服务器所要包含的是一个虚拟文件,即文件和当前被解析的文档不是位于同一个目录,而是存放在其它目录中。服务器会根据该参数的值找到根目录下的includes子目录。使用这种方法,用户可以把所有HTML文档包含的文件放在一个目录中,而根据相互之间的关系把不同的页面保存在不同的目录或子目录中。无论服务器解析哪一个文档都可以找到所包含的文件,不会产生任何错误。

不过这里有一个小问题需要解决。一般我们都会在页面中加入一些TITLE和META标签,假如我们规定所有的页面都调用相同的页眉文件的话,就显得很不灵活。用户碰到这样的问题时,可以使用两个包含文件,一个设置TITLE标签前的内容,另一个设置META标签后的部分,而在两个包含文件之间则可以添加任何定制内容。例如:

Your Page Title

这里放置页面内容

从上我们可以看出通过在页面中包含页眉和页脚可以大大减少站点更新的工作量。但是假如我们希望动态显示一些内容,例如页面的最后更新时间等该怎么办呢?没问题,我们可以把包含文件使用.html后缀保存,这样就可以在包含文件中调用其它的包含文件。

File:给? 当前目录的相对路径,其中不能使用“../”,也不能使用绝对路径。例如:

这就要求每一个目录中都包含一个header.html文件。当然,采用这样的方法并不比更新每一个页面简单多少,但是假如用户只更新一、两个文件的话还是很方便的。例如,假如我们不希望让一个对HTML不熟悉的人直接改动网站中的新闻页面的话,可以只让他更新一个单独的文本文件,然后再把该文件包含到HMTL文档中,这样即不会破坏原页面,同时又更新了内容,两全其美。

3.Echo:

Echo命令可以显示以下各环境变量:

DOCUMENT_NAME:显示当前文档的名称。

显示结果为:

index.html

DOCUMENT_URI:显示当前文档的虚拟路径。例如:

显示结果为:

/YourDirectory/YourFilename.html

随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。假如使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:

http://YourDomain

QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的非凡字符前面都有转义符“”。例如:

DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如:

显示结果为:

Saturday, the 15 of April, in the year 2000

DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:

LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实玫囊桓龉δ埽?灰?

www.bkjia.comtrueTechArticle你是否曾经或正在为如何能够在最短的时间内完成对一个包含上千个页面的网站的修改而苦恼?那么可以看一下本文的介绍,或许能够对你…

ssi 指令 php,SSI使用详解_PHP教程相关推荐

  1. php推荐码生成,最新最全PHP生成制作验证码代码详解(推荐),验证码详解_PHP教程...

    最新最全PHP生成制作验证码代码详解(推荐),验证码详解 1.0 首先先看代码 好,现在结合以上代码,来分析分析以上用到的几个函数: ① imagecreatetruecolor(); imagecr ...

  2. php switch case 判断语句,PHP的switch判断语句的“高级”用法详解,switch详解_PHP教程...

    PHP的switch判断语句的"高级"用法详解,switch详解 只所以称为"高级"用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实 ...

  3. php xml 实例教程,php解析xml方法实例详解,解析xml实例详解_PHP教程

    php解析xml方法实例详解,解析xml实例详解 本文以实例形式详细讲述了php解析xml方法.分享给大家供大家参考.具体分析如下: books.xml文件如下: Harry Potter J K. ...

  4. php中socket的使用,php中socket的用法详解,phpsocket详解_PHP教程

    php中socket的用法详解,phpsocket详解 本文实例详细讲述了php中socket的用法,分享给大家供大家参考.具体用法如下: 一.开启socket phpinfo();查看是否开启了so ...

  5. 请简述php循环控制语句,PHP 循环控制语句几种方法详解_PHP教程

    在php中循环语句一般是使用while,for,foreach而控制语句就是if swicth这些了,下面我来给大家介绍一下php循环控制语句用法吧. 1.if..else循环有三种结构第一种是只有用 ...

  6. php的session使用方法,phpsession会话使用方法详解_PHP教程

    本文章来给各位php 初学者介绍一篇关于php中全局变量session会话的基本使用方法,有需要了解的朋友可进入参考参考. Session是什么 Session是指有始有终的一系列动作或信息,比如去看 ...

  7. php 函数传值_传址_函数参数,php函数的传值与传址(引用)详解_PHP教程

    在php中我们函数传值就比较简单了,但可能有些朋友地天真无邪函数传址或引用搞不明白,下面小编来给各位介绍在php中函数传值与传址(引用)介绍,希望对各位有所帮助. php中引用的用法: 1. 变量的引 ...

  8. php写带分页的留言板,php中分页程序之基于留言板详解_PHP教程

    文章是重点是讲php中的分页原理,同时我们是利用一个实现来讲解如何在php中实现分页,这个就是基于自己写的留方板程序了,有需要的朋友可以参考一下,很适合于初学者哦. 分页的关键问题其实在于Mysql的 ...

  9. php 算法 二进制文件,关于PHP二进制流 逐bit的低位在前算法(详解)_PHP教程

    复制代码 代码如下: /****************************************************** * 逐bit的低位在前算法 * @param $x * @retu ...

最新文章

  1. win10 环境变量配置 如何在命令行运行php文件
  2. SQL注入法攻击一日通
  3. 这个处理不同基因组区域关系的工具集很不错!
  4. 原生Android 侧滑菜单实践(部分)
  5. 弹幕id格式错误_python爬虫教材,获取腾讯视频的弹幕
  6. eggjs增删改查MySQL,nodejs操作mysql实现增删改查
  7. access游戏库不显示 ea_全球游戏公司营收一览:腾讯连续第六年霸榜
  8. KTable的设置单元格属性
  9. java编码native2ascii下载_使用native2ascii 中文字符与Unicode编码相互转换
  10. 基于VHDL语言的多人表决器的设计
  11. c语言实现snn算法,Orkiszewski算法的C语言实现
  12. Python 分析近2000条“数据分析”相关岗位招聘信息
  13. 小米推送 java demo_XiaomiPushDemo【小米推送集成,基于V3.6.12版本】
  14. iis6.0 php phprc,Windows2003下IIS6.0+PHP5+FastCGI环境配置
  15. google chrome插件
  16. TCRT5000 红外测距使用解析
  17. linux服务器禁ping
  18. hdu 1814 Peaceful Commission 题解
  19. 车联网行业:2022年车联网数据安全监管制度研究报告
  20. 帝国理工学院计算机科学夲科生数,帝国理工学院计算机科学信息汇总,无背景要求,不需要GRE...

热门文章

  1. 利用iText.jar操作pdf文档
  2. 【Scratch二次开发】05-翻译国际化
  3. flutter获取图片大小的Widget(网络图片大小,本地图片大小)
  4. R语言中使用UpSet包绘制多集合Venn图
  5. LeetCode-完成旅途的最少时间
  6. 一寸照片电子版怎么弄?这两种方法要学会
  7. 纯css3圆柱模板立体图
  8. cisp-pte安全渗透工程师,如何成为安全渗透测试工程师?从认识网络安全威胁开始
  9. C++类和对象介绍(筑基上篇)
  10. 检讨书应该怎么写,我来做个示范