文档章节

Apache中配置SSI

Sandy_guoguo
 Sandy_guoguo
发布于 2015/12/22 14:12
字数 1490
阅读 63
收藏 3

SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。

SSI功能非常强大(这个是别人说的)。在我看来,它的作用也就是实现静态网页的局部动态更新。但就是这一点,帮了我们很大的忙。尤其是在多个静态网页包含了同样的内容的时候。如果这一部分内容需要更新,在不使用SSI包含功能的时候,就需要把所有的静态网页更新一遍。这是一个非常繁琐又容易出错的工作。这个时候SSI就派上用场了。把静态页中需要更新的部分单独拿出来,写入html文件中,然后将这个文件使用<!--include virtual=""-->形式包含到所有的静态文件,一般是.shtml文件。这样,只要更新这个html文件的内容,所有.shtml文件的内容就跟着变化了。可谓是一劳永逸。

在Apache中配置SSI

1、开启mime_module, 即找到 #LoadModule mime_module modules/mod_mime.so ,去掉前面的#号。如果已经去掉了,忽略这条。

2、添加类型,在mime_module内部添加所有可能包含的类型

<IfModule mime_module>
    AddType text/html .shtml .html .htm .tpl .ssi
    AddOutputFilter INCLUDES .shtml .html .htm .tpl .php
</IfModule>

3、配置Options指令。搜索 Options Indexes FollowSymLinks,在后面加Includes, 成为 Options Indexes FollowSymLinks Includes

  到此为止,SSI已配置完成,一般情况下,包含文件就OK啦。

文件包含引用的方法:

引用绝对路径的文件:<!--#include file="e:/w2/top.shtml"-->

引用当前虚拟目录文件:<!--#include virtual="include/top.html"-->

路径要写正确,路径不正确会报错:[an error occurred while processing this directive]

还可以这么用: <!--#echo var="DATE_LOCAL" --> 输出当地时间。

但是,在我自己的开发环境下,上面的这些怎么配置都无法实现。

看了好多文档,做了很多尝试,最后发现把Apache的配置中的 AllowOverride All 改为AllowOverride None 。引用包含文件就不会报错了。

但是这样就会把 .htaccess文件完全屏蔽,这样,写在.htaccess文件中的其他命令也就不起任何作用了。改为 AllowOverride FileInfo, .htaccess恢复使用。这是文件包含又不能用。查了一下.htaccess文件,发现里面只有url rewrite相关的内容。于是,我便做了以下改动:

  1. .htaccess文件里的内容都放在Apache配置文件里

  2. 把.htaccess文件彻底删除。

  3. 修改AllowOverride配置为:AllowOverride None

这下,包含文件的问题,路径重写的问题全都搞定了。



关于Options指令:

Options指令是Apache配置文件中一个比较常见也比较重要的指令,Options指令可以在Apache服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess文件中使用。Options指令的主要作用是控制特定目录将启用哪些服务器特性。

根据以上说法,可以根据需要,在不同的地方加 Options指令,可以单独的 Options Includes, 也可以使用复合的 Options Indexes FollowSymLinks Includes,具体指令的意思,可以参考手册。

在使用了虚拟机的服务器中,如果之想在某个虚拟机中使用Includes,可以只在虚拟机中配置Options Includes.

   

关于AllowOverride:


Apache的配置文件httpd.conf是主要的配置文件,但是针对每个目录,apache还允许在它们各自的目录下防止一个叫做.htacess的文件,这个文件同样也能控制这个目录的属性 

AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型. 

1、AuthConfig  允许使用所有的权限指令,他们包括AuthDBMGroupFile AuthDBMUserFile  AuthGroupFile  AuthName AuthTypeAuthUserFile和Require 

2、FileInfo    允许使用文件控制类型的指令。它们包括AddEncoding AddLanguage  AddType  DEfaultType ErrorDocument LanguagePriority 

3、Indexes     允许使用目录控制类型的指令。它们包括AddDescription  AddIcon  AddIconByEncoding AddIconByType  DefaultIcon  DirectoryIndex  FancyIndexing  HeaderName  IndexIgnore  IndexOptions ReadmeName 

4、Limit       允许使用权限控制指令。它们包括Allow Deny和Order 

5、Options     允许使用控制目录特征的指令.他们包括Options 和XBitHack 


Options 

1、All         准许以下除MultiViews以外所有功能 

2、MultiViews  允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用 

3、Indexes     若该目录下无index文件,则准许显示该目录下的文件以供选择 

4、IncludesNOEXEC  准许SSI,但不可使用#exec和#include功能 

5、Includes    准许SSI 

6、FollowSymLinks  在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>;标记内设置,该选项会被忽略 

7、SymLinksIfOwnerMatch  在该目录中仅仅跟踪本站点内的链接 

8、ExecCGI     在该目录下准许使用CGI


Apache虚拟主机配置范例

<VirtualHost 127.0.0.1>
    ServerAdmin xxx@example.com
    ServerName xxx.example.com
    DocumentRoot D:/wamp/www/xxx.example.com/web
    ErrorLog "logs/xxx-error.log"
    CustomLog "logs/xxx-access.log" common
    #路径重写
    RewriteEngine on
    RewriteCond $1 !^(index\.php|/ajax|/images|/css|/scripts|/assets|/html|robots\.txt)
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^(.*)$ /index.php/$1 [L]
    <Directory D:/wamp/www/xxx.example.com>
        Options Indexes FollowSymLinks Includes #包含配置
        Order Deny,Allow
        Deny from all
        Allow from all
    </Directory>
</VirtualHost>



© 著作权归作者所有

共有 人打赏支持
Sandy_guoguo
粉丝 6
博文 18
码字总数 5510
作品 0
海淀
程序员
linux下开启apache包含ssi包含

centos apache php apache配置文件修改如下 AddType text/html .shtml .html AddOutputFilter INCLUDES .shtml .html Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC 重启服务器 ......

juhenj
2014/02/22
419
1
tomcat ssi配置及升级导致ssi include错误问题解决

最近tomcat升级版本时,遇到了ssi解析的问题,记录下解决的过程,还有tomcat ssi配置的要点。 tomcat 配置SSI的两种方式 Tomcat有两种方式支持SSI:Servlet和Filter。 SSIServlet 通过Servl...

横云断岭
2015/04/15
0
0
SSI 在TOMCAT5与TOMCAT6中的配置 (转)

1.简介: SSI全称(Server Side Includes)是在HTML静态页面中使用的指令,当页面在服务端执行的时候是可以进行服务端解析的。这种方式可以让我们在存在的HTML页面里面分 块动态生成内容而不...

肥皂泡2
2011/07/02
0
0
动态缓存技术之CSI,SSI,ESI

平时我们谈页面,大都数是以页面为单位的。 一、CSI (Client Side Includes) 含义:通过iframe、javascript、ajax等方式将另外一个页面的内容动态包含进来。 原理:整个页面依然可以静态化为...

jims
2016/02/22
44
0
SSL证书卸载与SSI高级应用

SSL证书卸载与SSI高级应用 http://netkiller.github.io/journal/ssi.html 版权 © 2014 http://netkiller.github.io 2014-09-17 目录 1. 什么是SSI(Server Side Include) 2. 为什么使用SSI 3......

neo-chen
2014/09/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
3
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部