tomcat下使用ssi的问题
2015-07-24 00:00
519 查看
摘要: an error occurred while processing this directive
在tomcat下使用ssi指令的配置如下:
找到conf/context.xml这个文件,使用编辑器打开,在<Context>标签中加一句privileged="true",变成<Context privileged="true">
找到conf/web.xml这个文件,使用编辑器打开,在文件中查找ssi(原文件中原本就有ssi的配置,只不过被注释了),找到后去掉有关配置ssi的注释。主要有四个地方:servlet节点、servlet-mapping节点、filter节点、filter-mapping节点。
仅仅取消注释之后,有可能会发生乱码问题,解决办法是在servlet标签中增加一段配置:
4. tomcat这样配置之后,部署在tomcat之上的站点就可以使用include指令了。这样当用户访问时,tomcat如果遇到include指令,就会把include指定的静态页面文件包含到当前页面来。但SSI默认需要在*.shtml文件中才能使用,被引用的文件也得是*.shtml,其实我们也可以通过配置来让SSI也支持*.html的文件,需要找到servlet-mapping这个节点,在该节点中添加一段代码:
web.xml文件中关于SSI的部分配置成功之后如下:
在使用include指令的时候,有两种用法,使用file或使用virtual来指定要引用的文件的路径,如下
这两种情况一定要弄清楚,拿代码来说。如果使用file,则当前html文件一定要和static文件夹在同一个目录下,这虽然是一个相对路径的用法,但却不能使用“../”来返回上一个目录,否则页面会出现如下错误:an error occurred while processing this directive。但往往实际中,我们使用include指令的页面在其它文件夹下,不跟static一个目录,甚至不在一个域名下,这种情况下,就不能使用file,而要使用virtual。virtual是指定一个虚拟路径,使用
表示指向网站根目录下static文件夹,使用
表示指向test.xxx.com站点下的static文件夹, 使用
表示指向当前文件所在文件夹的上一层文件夹中的static。
参考博文:http://www.blogjava.net/pdw2009/archive/2009/03/06/258270.html
http://blog.csdn.net/5iasp/article/details/7921513
在tomcat下使用ssi指令的配置如下:
找到conf/context.xml这个文件,使用编辑器打开,在<Context>标签中加一句privileged="true",变成<Context privileged="true">
找到conf/web.xml这个文件,使用编辑器打开,在文件中查找ssi(原文件中原本就有ssi的配置,只不过被注释了),找到后去掉有关配置ssi的注释。主要有四个地方:servlet节点、servlet-mapping节点、filter节点、filter-mapping节点。
仅仅取消注释之后,有可能会发生乱码问题,解决办法是在servlet标签中增加一段配置:
<init-param> <param-name>inputEncoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>outputEncoding</param-name> <param-value>utf-8</param-value> </init-param>
4. tomcat这样配置之后,部署在tomcat之上的站点就可以使用include指令了。这样当用户访问时,tomcat如果遇到include指令,就会把include指定的静态页面文件包含到当前页面来。但SSI默认需要在*.shtml文件中才能使用,被引用的文件也得是*.shtml,其实我们也可以通过配置来让SSI也支持*.html的文件,需要找到servlet-mapping这个节点,在该节点中添加一段代码:
<url-pattern>*.html</url-pattern>
web.xml文件中关于SSI的部分配置成功之后如下:
<servlet>
<servlet-name>ssi</servlet-name>
<servlet-class>
org.apache.catalina.ssi.SSIServlet
</servlet-class>
<init-param>
<param-name>buffered</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>false</param-value>
</init-param>
<init-param> <param-name>inputEncoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>outputEncoding</param-name> <param-value>utf-8</param-value> </init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<filter>
<filter-name>ssi</filter-name>
<filter-class>
org.apache.catalina.ssi.SSIFilter
</filter-class>
<init-param>
<param-name>contentType</param-name>
<param-value>text/x-server-parsed-html(;.*)?</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>expires</param-name>
<param-value>666</param-value>
</init-param>
<init-param>
<param-name>isVirtualWebappRelative</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ssi</filter-name>
<url-pattern>*.shtml</url-pattern>
<url-pattern>*.html</url-pattern>
</filter-mapping>
在使用include指令的时候,有两种用法,使用file或使用virtual来指定要引用的文件的路径,如下
<!--#include file="static/common/header.shtml"--> 或 <!--#include virtual="../static/common/header.shtml"-->
这两种情况一定要弄清楚,拿代码来说。如果使用file,则当前html文件一定要和static文件夹在同一个目录下,这虽然是一个相对路径的用法,但却不能使用“../”来返回上一个目录,否则页面会出现如下错误:an error occurred while processing this directive。但往往实际中,我们使用include指令的页面在其它文件夹下,不跟static一个目录,甚至不在一个域名下,这种情况下,就不能使用file,而要使用virtual。virtual是指定一个虚拟路径,使用
<!--#include virtual="/static/common/header.shtml"-->
表示指向网站根目录下static文件夹,使用
<!--#include virtual="http://test.xxx.com/static/common/header.shtml"-->
表示指向test.xxx.com站点下的static文件夹, 使用
<!--#include virtual="../static/common/header.shtml"-->
表示指向当前文件所在文件夹的上一层文件夹中的static。
参考博文:http://www.blogjava.net/pdw2009/archive/2009/03/06/258270.html
http://blog.csdn.net/5iasp/article/details/7921513
相关文章推荐
- 单机配置tomcat 8 集群
- tomcat7高CPU问题
- Tomcat 服务器的端口号的修改
- C#实现看门狗监控tomcat运行、定制任务计划
- Tomcat各种配置
- Tomcat之——配置项目有虚拟路径
- 同一个tomcat添加多个项目的报webAppRootKey错问题
- tomcat配置301重定向
- tomcat中建立基于端口号的虚拟主机
- 查看tomcat版本
- 如何配置和使用Tomcat访问日志
- 一台windows服务器上安装配置两个自启动Tomcat服务
- 为tomcat设置基于主机名的虚拟主机并使其能在本机上运行的步骤
- win-server2008部署tomcat导致80端口被占用的原因分析
- TOMCAT 下部署 PHP
- 使用telnet测试tomcat的虚拟主机时出现“ No Host matches server name www.xxx.com”的错误
- tomcat之数据库连接池proxool详细配置
- eclipse中tomcat端口占用情况
- Nginx+tomcat配置集群
- tomcat配置多域名