在Nginx下SSI不能解析成源码的问题


SSI是一种服务器端包含工具,目前开发中遇到的问题是:
在APACHE下支持多个变量的组合判断,而在NGINX下只能用一个条件去判断并且不能嵌套。
代码如下:
<!--# if expr="$a=2 || $b=5" -->
<div>...</div>
<!--# endif -->

<!--# if expr="$a=2" -->
<!--# if expr="$b=5" -->
<div>...</div>
<!--# endif -->
<!--# endif -->
在APACHE下均能成功解析,而在NGINX下不能解析以源码的形式展现在页面里。

apache nginx

hyper 13 years ago

对照这个检测一下:
http 段中是否加入下面几句:
ssi on;
ssi_silent_errors off;
ssi_types text/shtml;

1、显示服务器端环境变量<#echo>

本文档名称:

<!—#echo var=”DOCUMENT_NAME”—>

现在时间:

<!—#echo var=”DATE_LOCAL”—>

显示IP地址

<! #echo var=”REMOTE_ADDR”—>

2、将文本内容直接插入到文档中<#include>

<! #include file=”文件名称”—>

<! #include virtual=”文件名称”—>

file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file=”nav_head.htm”。

virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为virtual=”/hoyi/nav_head.htm”

3、显示WEB文档相关信息<#flastmod><#fsize>(如文件制作日期/大小等)

文件最近更新日期:

<! #flastmod file=”文件名称”—>

文件的长度:

<!—#fsize file=”文件名称”—>

4、直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

<!—#exec cmd=”文件名称”—>

<!—#exec cgi=”文件名称”—>

将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。

5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)

6、高级SSI可设置变量使用if条件语句。

莫慌丶抱紧我 answered 13 years ago

Your Answer