主要内容

  • 什么是SSI
  • nginx开启SSI
  • SSI常用命令
  • SSI获取并使用查询参数
    • 在页面文件中获取
    • 在nginx的配置文件中设置
    • 使用参数

什么是SSI

SSI:Server Side Include,是一种基于服务端的网页制作技术。它的工作原理是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必在所有文件中重复。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。

nginx开启SSI

在nginx.conf设置。三个最基本的指令:

  • ssi on;

    • 开启ssi支持,默认是关闭的
  • ssi_silent_errors on;
    • 开启后在处理SSI文件出错时不输出错误提示:"[an error occurred while processing the directive] "。默认是关闭的
  • ssi_types text/shtml;
    • 默认是text/html。如果需要shtml支持,则需要设置:ssi_types text/shtml。

这三行的配置可以放在nginx的三个作用域下面(http, server, location)。

location / {ssi on;...
}

更多指令可参看:nginx指令文档

SSI常用命令

命令语法如下:

<!--# command parameter1=value1 parameter2=value2 ... -->

最常用的应该是include:

<!--# include file="footer.html" --><!--# include virtual="/remote/body.php?argument=value" -->

file文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。

virtual文件名是一个web请求路径,当然应该是本服务器上的。可以是绝对或相对路径,但不能通过".."访问上层路径。

其它命令还是看这儿吧:nginx命令文档

SSI获取并使用查询参数

获取参数有两种方式:

  • 在页面文件中获取;
  • 在nginx的配置文件中设置。

在页面文件中获取

在页面中写如下代码取得p1和p2参数:

<!--#if expr="$QUERY_STRING = /\bp1=(?P<p1>[a-zA-Z0-9]+)/" -->
<!--#endif -->
<!--#if expr="$QUERY_STRING = /\bp2=(?P<p2>[a-zA-Z0-9]+)/" -->
<!--#endif -->

正则表达式中的"\b"用来划分单词的边界。“?P<p1>”将解析出的内容赋给变量p1。

在nginx的配置文件中设置

nginx.conf中如下代码:

location /sjjy {ssi on;...set $p3 $arg_p3;
}

可将url中的查询参数p3的值赋给变量p3,供在页面中使用。(在nginx中取url中?后面的变量的值是通过$arg_作为前缀获取的。)

跟从页面中获取方式不同的是,当url中没有参数p3时,通过在配置文件中给p3赋值,p3也有一个空字符串值;但通过页面中代码解析方式,会得到一个空值(none)。

使用参数

可以用echo命令输出:

<!--#echo var="p1" -->

也可以在其它命令中引用:

<!--# include file="${p2}.txt" -->

nginx下使用SSI相关推荐

  1. html 支持ssi,nginx下开启ssi支持

    一.简介 SSI(Server Side Include),是一种类似于ASP的基于服务器的网页制作技术 .将文本.图形或应用程序信息包含到网页中.例如,可以使用 SSI 包含时间/日期戳.版权声明或 ...

  2. Nginx下本机多项目虚拟主机配置[一个端口多个站点]

    nginx下多项目虚拟主机配置: 假如你需要在一台机子上,用不同的域名访问和运行不同的项目,这个时候你就需要vhost配置: "本机虚拟域名.一个端口多个站点" 0.hosts文件 ...

  3. Nginx下配置Http Basic Auth保护目录

    博客已经搬家,请访问如下地址:http://www.czhphp.com Nginx下的配置也挺方便的,我们可以沿用由Apache的htpasswd模块生成的.htpasswd文件作为密码文件.注意, ...

  4. 【铜】第174-9篇 一对一视频录制(九)一对多学生端删除白板及nginx下配CI

    关键词:webm文件在手机端播放, 一对多学生端删除白板, nginx下配CI 一.一对一视频录制 1.1.webm文件在手机端播放 1)在PC上 a.)用谷歌浏览器播放 http://123.57. ...

  5. java pathinfo,nginx下支持PATH_INFO的方法实例详解

    本文实例分析了nginx下支持PATH_INFO的方法.分享给大家供大家参考,具体如下: 要想让nginx支持PATH_INFO,首先需要知道什么是pathinfo,为什么要用pathinfo? pa ...

  6. 配置nginx下别名alias支持PHP fastcgi解析

    这几天在配置Nginx,PHP用FastCGI,在Apache里,有alias,比较方便,在Nginx下没有虚拟目录概念的,是用location配合alias使用,但使用alias标签的目录块中不能使 ...

  7. 解析CI即CodeIgniter框架在Nginx下的重写规则

    本篇文章是对CI即CodeIgniter框架在Nginx下的重写规则进行了详细的分析介绍,需要的朋友参考下 最近研究CI框架,发现这个框架的路由功能在Nginx下有问题,报404错误,后来在网上查资料 ...

  8. nginx下部署vue项目

    nginx下部署vue项目 今天要用到服务器nginx,还需要把自己的vue的项目部署到服务器上去所以就写一下记录下来. 首先要去nginx官网下下载nginx:  下载地址:https://ngin ...

  9. php fpm 日志记录,如何解决nginx下php-fpm不记录php报错日志的问题

    如何解决nginx下php-fpm不记录php报错日志的问题 发布时间:2020-07-28 10:17:29 来源:亿速云 阅读:150 作者:Leah 本篇文章为大家展示了如何解决nginx下ph ...

最新文章

  1. java newsize_JVM中的-Xms -Xmx -XX:newSize -XX:MaxnewSize -Xmn -XX:PermSize -XX:MaxPermSize区别介绍...
  2. javaweb学习总结(三十六)——使用JDBC进行批处理
  3. 成功:选择比努力更重要,智慧比勤奋更重要
  4. Navicat导入Excel表格数据
  5. python会计实证研究_描述性统计分析在实证研究中的作用及具体软件实现——以SPSS为例...
  6. CSS 强制换行和禁止换行学习
  7. java如何实现e的次方_java 大数据次方运算
  8. 500万现金靠银行理财过一辈子可以吗?
  9. 软件开发模式之敏捷开发
  10. Linux 主机规划与磁盘分区
  11. delphi盒子那些软件商店里的年轻人
  12. CentOS 操作系统初识
  13. Axure 网站后台-能源管理系统 rp 9原模板代码下载
  14. 选择排序(java代码实现)
  15. java ape切割_无损分解和保持依赖的判断
  16. 概念模型向逻辑模型的转换
  17. lotus notes 闪退_win10系统Lotus notes邮箱闪退的恢复办法
  18. PX Deq Credit: send blkd
  19. PCM开发板模块实验指导--SPI读写PSRAM64实验
  20. 如何获得最佳学习效果?

热门文章

  1. Cisco AnyConnect 报错 connection failed due to unsuccessful domain name resolution
  2. 定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
  3. 关于注册Github不能通过验证的解决方法(easy,一定过)
  4. python课程表代码_Python课程表
  5. 读书笔记||函数探幽
  6. Windows多重引导故障快速修复
  7. [SCOI2012]喵星球上的点名——堪称十种方法做的题
  8. 从零到一保姆级Ubuntu深度学习服务器环境配置教程
  9. 萨摩耶数科林建明:坚守“终局思维” 让金融科技发展行稳致远
  10. Java面向对象思想精华(二)