首页 > 服务器管理 > 让htm支持SSI

让htm支持SSI

2011年8月26日 发表评论 阅读评论

iis中:
  也就是需要两步,
  1.在虚拟主机块中加入,或者全局加
  AddOutputFilter INCLUDES .htm
  AddHandler server-parsed .htm
  2.在Directory中的Options加入Includes参数,我觉得使用IncludesNOEXEC可能会更好。

<Directory "F:/hx/">
    Options Indexes FollowSymLinks IncludesNOEXEC
</Directory>

  一些错误的解决:
  包含的文件出现如下提示:[an error occurred while processing this directive]
  原因之一:先检查一下包含的文件路径对不对,文件是否存在。
  如果正确,则问题出在包含的语句上。

<!--#include file="文件名称"-->
<!--#include virtual="文件名称"-->

  file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的top.htm文档,则为file=”top.htm”。
  virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hx目录下的top.htm文件;则为virtual=”/hx/top.htm”
  如果是上一级目录的子目录,就是使用路径../hx/top.htm时,需要使用Virtual,如果使用file,则会产生上面的提示。但在IIS下这样好像不会产生错误。
  Apache中:
  要使服务器允许SSI ,必须在httpd.conf或.htaccess文件中有如下配置:
  Options +Includes
  这样就告诉服务器允许解析文件中的SSI指令。注意,在多数配置中,多个Options指令会互相覆盖,所以可能需要对使用SSI的目录专门使用一个Options指令,以确保其有效。
  并非所有文件中的SSI指令都会被解析,必须告诉Apache应该解析哪些文件。有两种方法使Apache解析带有特定后缀名的文件,比如:.shtml ,配置如下:

  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml

  该方法的缺点之一是,为了使文件具有.shtml后缀从而执行其中的指令,需要加入SSI指令的现有文件的名字,以及所有指向此页面的连接。
  另一种方法是,使用XBitHack指令:
  XBitHack on
  XBitHack告诉Apache解析所有设置了执行位的文件中的SSI指令。这样,无需修改文件名,只要用chmod使文件变成可执行的,就可以对现有页面增加SSI指令。
  chmod +x pagename.html
  这里简要说明一点:偶然会有人向你推荐,无须用带.shtml的文件名,只要使Apache解析所有.html文件的SSI就可以了。那些人可能没听说过XBitHack 。要知道,这样做会使Apache在发送文件到客户端之前通读此文件,即使其中并没有任何SSI指令,从而对速度有很不利的影响,所以这并不是好办法。
  当然,在Windows上,没有对应的执行位可以设置,所以对你的配置方法就有一些限制。
  在默认配置的情况下,Apache不会为SSI页面发送最后修改日期或者内容长度的HTTP头,因为这些值对动态页面来说难以确定。这样会阻止页面被缓冲,导致客户端性能有明显的下降。有两种解决方法:
  设置 XBitHack Full ,告诉Apache在判断最后修改日期时,只查看被请求文件本身的日期,而忽略其中包含的其它文件的修改日期。
  使用mod_expires提供的指令为文件设置一个明确的过期时间,并告诉浏览器和代理这个文件可以被缓冲。
From – http://ued.stuin.com/server/htm-ssi/

分类: 服务器管理 标签: , , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.