文档章节

Apache中配置SSI

Sandy_guoguo
 Sandy_guoguo
发布于 2015/12/22 14:12
字数 1490
阅读 61
收藏 3
点赞 0
评论 0

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
动态缓存技术之CSI,SSI,ESI

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

jims
2016/02/22
44
0
SSI 在TOMCAT5与TOMCAT6中的配置 (转)

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

肥皂泡2
2011/07/02
0
0
Apache/Ngnix虚拟主机的配置

一.配置http-vhosts.conf 首先在apache配置文件中httpd.conf将下面代码前的#去掉 然后打开conf/extra/httpd-vhosts.conf加上下面的配置信息 当然,以上方式是基于主机名称,如果想基于端口,...

IamOkay
2014/10/25
0
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
shtml 引入html 让Apache支持shtml实现include文件解析

什么是shtml? 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。默认扩...

乐晨
2013/01/05
0
0
[转载] 用Apache的CGI封装器来加强安全性

[转载] 浅析Apache中SSI和CGI的设定方法 由于Apache具有相当高的可移植性,它支持超过30种操作系统,包括Unix、Windows 及Darwin等系统,所以目前在网络上已注册的网域里大部份是使用Apache网...

zt371
2009/05/06
111
0
Nginx server之Nginx作为反向代理服务器

一:Nginx介绍 1.Nginx简介:nginx [engine x]是一个俄罗斯人编写的HTTP和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包...

fighting-cluber
2014/03/11
0
0
动态内容缓存技术 CSI,SSI,ESI介绍

1.CSI方案 CSI (Client Side Includes) 通过iframe、javascript、ajax 等方式将另外一个页面的内容动态包含进来。 2.SSI方案 SSI (Server Side Includes) Server Side Includes (SSI) is a s......

coldlemon
2014/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一款成功的全球服游戏该如何进行架构选型与设计?

全球服游戏如今正在成为出海游戏的主要考虑模式,跨国对战、全球通服打破国界的限制,将不同地区不同语言的玩家放在一起合作/竞技,成功吸引了大量玩家的关注,并逐渐成为主流的游戏玩法。 ...

UCloudTech
4分钟前
0
0
StringUtils类中isEmpty与isBlank的区别

org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String str)。 StringUtils.isEmpty(String str) 判断某字符串是否为...

说回答
17分钟前
0
0
react native使用redux快速上手

看例图 要求点击组件一中的按钮,改版组件二的背景色。 利用state和props和容易实现。 //app.jsimport React, {Component} from 'react';import {StyleSheet, Button, View, Text} from ...

燕归南
18分钟前
0
0
页面输出JSON格式数据

package com.sysware.utils;import java.io.IOException;import javax.servlet.ServletResponse;import org.apache.log4j.Logger;import com.sysware.SyswareConstant;pub......

AK灬
39分钟前
0
0
springCloud-2.搭建Eureka Client的使用

1.使用IDEA,Spring Initializr创建 2.填写项目资料 3.选择spring boot版本,插件选择Cloud Discovery→Eureka Discovery 4.选择保存地址 5.修改application.yml eureka: client: s...

贺小康
43分钟前
0
0
CenOS 6.5 RPM 安装 elasticsearch 6.3.1

下载 wget --no-check-certificate https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm...

阿白
45分钟前
0
0
1.4 创建虚拟机&1.5 安装CentOS7&1.6 配置ip(上)&1.7 配置ip(下)

1.4 创建虚拟机 知识点 虚拟机网络链接模式 桥连 直接将虚拟网卡桥接到一个物理网卡上面。需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主...

小丑鱼00
51分钟前
0
0
TrustAsia(亚洲诚信)助力看雪2018安全开发者峰会

2018年7月21日,看雪2018安全开发者峰会在北京国家会议中心圆满落下帷幕。拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,汇聚业内顶尖的安全开发者和技术专家...

亚洲诚信
53分钟前
0
0
Spring注解介绍

@Resource、@AutoWired、@Qualifier 都用来注入对象。其中@Resource可以以 name 或 type 方式注入,@AutoWired只能以 type 方式注入,@Qualifier 只能以 name 方式注入。 但它们有一些细微区...

lqlm
今天
0
0
32位汇编在64位Ubuntu上的汇编和连接

本教程使用的操作系统是Ubuntu Linux 18.04 LTS版本,汇编器是GNU AS(简称as),连接器是GNU LD(简称ld)。 以下是一段用于检测CPU品牌的汇编小程序(cpuid2.s): .section .dataoutput...

ryanliue
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部