nginx SSI(Server Side Include)服务端包含 合并拼装静态内容

news2025/1/11 0:24:50

一、什么是SSI

在被传送给浏览器之前,服务器会对 HTML 文档进行完全地读取、分析以及修改,使用SSI指令将文本、图片或代码信息包含到网页中。对于整个页面可以拆分成多个模块,通过SSI指令将几个模块拼接成一个完整的页面,当有内容更新时,只需要更新对应的模块即可,无需更新整个页面的文件,对于公共的模块可以在不同的页面重复利用。

二、nginx配置实现SSI功能

有如下三个页面
/test/test.html

<!DOCTYPE html>
<html lang="cn">
    <head>
        <meta charset="utf-8">
        <title>搜狗搜索引擎 - 上网从搜狗开始</title>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <link rel="stylesheet" type="text/css" href="//dlweb.sogoucdn.com/pcsearch/web/index/css/index_style_39e6e10.css">
    </head>
    <body color-style="white">
        <div class="wrapper" id="wrap">
        	<!-- 下面的内容看起来跟注释一样,但是多了一个#号,就可以识别出改标签并执行对应的嵌入操作-->
        	<!-- 可以使用如下的绝对路径,也可以使用相对路径 header.html content.html-->
            <!--# include file="/test/header.html" -->
            <!--# include file="/test/content.html" -->
            <div class="ft-v1" id="QRcode-footer" style="padding-bottom:28px"><div class="ft-info"><a uigs-id="mid_pinyin" href="http://pinyin.sogou.com/" target="_blank"><i class="i1"></i>搜狗输入法</a><span class="line"></span><a uigs-id="mid_liulanqi" href="http://ie.sogou.com/" target="_blank"><i class="i2"></i>浏览器</a><span class="line"></span><a uigs-id="mid_daohang" href="http://123.sogou.com/" target="_blank"><i class="i3"></i>网址导航</a><br><a href="//e.qq.com?from=sougou01" target="_blank" class="g">企业推广</a>&nbsp;-&nbsp;<a href="http://www.sogou.com/docs/terms.htm?v=1" target="_blank" class="g">免责声明</a>&nbsp;-&nbsp;<a href="https://fankui.sogou.com/index.php/web/web/index/type/4" target="_blank" class="g">意见反馈及投诉</a>&nbsp;-&nbsp;<a href="https://www.sogou.com/docs/privacy.htm?v=1" target="_blank" class="g" uigs-id="footer_private">隐私政策</a><br><span class="g">药品医疗器械网络信息服务备案:(京)网药械信息备字(2021)第00047号</span><br>©&nbsp;2004-2024&nbsp;Sogou.com&nbsp;/&nbsp;<a href="http://www.12377.cn" class="g" target="_blank">网上有害信息举报专区</a>&nbsp;/&nbsp;<span class="g">京网文(2019)6117-724号</span>&nbsp;/&nbsp;<a class="g" href="https://beian.miit.gov.cn/" target="_blank">京ICP证050897号</a>&nbsp;/&nbsp;<a class="g" href="https://beian.miit.gov.cn/" target="_blank">京ICP备11001839号-1</a>&nbsp;/&nbsp;<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11000002000025" class="ba" target="_blank">京公网安备11000002000025号</a></div>  <div class="fit-older"></div>  </div>
        </div>
    </body>
</html>

/test/header.html

<!DOCTYPE html>
<html lang="cn">
    <head>
        <script>
            console.log("9999999999999999999999");
        </script>
    </head>
    <body>
        <div class="header">
            <div class="top-nav">
                <ul>
                    <li class="cur">
                        <span>网页</span>
                    </li>
                    <li>
                        <span>图片</span>
                    </li>
                    <li>
                        <span>视频</span>
                    </li>
                </ul>
            </div>
        </div>
    </body>
</html>

/test/content.html

<!DOCTYPE html>
<html lang="cn">
    <head>
    </head>
    <body>
        <div class="content" id="content">
            <div class="pos-header" id="top-float-bar">
                <div class="part-one"></div>
                <div class="part-two" id="card-tab-layer">
                    <div class="c-top" id="top-card-tab"></div>
                </div>
            </div>
            <div class="logo2" id="logo-s">
                <span></span>
            </div>
            <div class="logo" id="logo-l">
                <span></span>
            </div>
            <div class="search-box querybox-focus" id="search-box">
                <form action="/web" name="sf" id="sf">
                    <span class="sec-input-box">
                        <input type="text" class="sec-input active" name="query" id="query" maxlength="100" len="80" autocomplete="off">
                    </span>
                    <span class="enter-input">
                        <input type="submit" value="搜狗搜索" id="stb">
                    </span>
                </form>
            </div>
        </div>
    </body>
</html>

配置nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        # 开启SSI
        ssi on;
        # SSI出错时,控制出错信息
        ssi_silent_errors on;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # 这里我把访问文件放在根目录/test文件夹下了
        location /test/ {
            root   /;
        }
    }
}

合并后的页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型在软件测试领域的应用场景有哪些?_大模型在测试领域应用

在数字化转型的大背景下&#xff0c;在软件定义一切的趋势下&#xff0c;软件测试人员需要接触和理解的信息越来越多&#xff0c;并呈现加速增长的态势。需求越来越大&#xff0c;交付周期越来越短&#xff0c;受制于体力和能力限制&#xff0c;测试人员的效率和质量难以同步提…

基于模式识别的垃圾分类系统-计算机毕业设计源码96151

摘 要 随着城市化进程的加速和人口的不断增长&#xff0c;垃圾管理和环境保护成为了全球面临的重要挑战之一。垃圾分类作为一种可行的解决方案&#xff0c;旨在减少垃圾的数量、降低环境污染&#xff0c;并促进资源的回收与再利用。 本文旨在设计并开发一个垃圾分类系统。该系统…

电工电子革新风暴:在线电路仿真软件重塑行业格局

随着科技的不断进步&#xff0c;电工电子行业正迎来一场由在线电路仿真软件引领的革新风暴。这些功能强大的软件工具不仅极大地提高了电路设计的效率&#xff0c;更为整个行业带来了前所未有的冲击和机遇。 仿真软件&#xff1a;电工电子行业的“隐形推手” 在线电路仿真软件…

代码随想录算法训练营第42天| 198.打家劫舍、213.打家劫舍II 337.打家劫舍III、 337.打家劫舍III

198.打家劫舍 题目链接&#xff1a;198.打家劫舍 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 记忆化搜索思路&#xff1a; 可以从最后一间房子开始&#xff0c;每次面对一个房子要考虑打劫还是不打劫&#xff0c;如果打劫了就从它的下下个房子开始打劫&#xff0c;在…

idea Git操作

1、代码拉取&#xff08;左上角&#xff09; 或 2、代码push&#xff08;左上角&#xff09; 3、切换分支&#xff08;右下角&#xff09; 4、分支管理 5、当前分支和某一个分支对比差异 6、当前分支某一个提交需要恢复成提交前状态&#xff08;revert&#xff09; 7、其他分…

Python处理浮点数的实用技巧

更多Python学习内容&#xff1a;ipengtao.com 四舍五入是一种常见的数学操作&#xff0c;它用于将数字舍入到指定的精度。Python 提供了多种方法来实现四舍五入操作&#xff0c;从基本的 round 函数到高级的 decimal 模块&#xff0c;满足不同的需求。本文将详细介绍这些方法&a…

Profibus DP主站转Modbus网关连接伺服与电机通讯

在工业自动化领域&#xff0c;将Profibus DP主站转Modbus网关&#xff08;XD-MDPBM20&#xff09;用于连接伺服与电机通讯是一种常见且重要的应用方式。当使用Profibus DP主站转Modbus网关&#xff08;XD-MDPBM20&#xff09;连接伺服与电机进行通讯时&#xff0c;可以参考以下…

使用代理,在Mapper层面统一封装VO、Entity 之间的转换逻辑

无聊看看开源项目&#xff0c;无意间看到里面的业务代码用到了BaseMapperPlus&#xff0c;于是点进去发现里面封装了Vo、Entity 之间的转换逻辑。想着自己平时都是手动的进行 copy 转换来着。于是本地进行验证了一番&#xff0c;发现还挺好用的&#xff0c;懒人必备。但是前提是…

MySQL 9.0 悄悄上线,支持面向AI的向量数据库

MySQL狂热粉丝群已经发现MySQL官网上MySQL9.0这两天悄然上线&#xff0c;已经可以下载体验了&#xff0c;目前被定义为创新版本&#xff08;Innovation&#xff09;。 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 支持主流的操作系统&#xff0c;安装后可以直…

101 个现实世界的新一代 AI 用例

自从一年半前生成式人工智能首次引起世界关注以来&#xff0c;人们一直在热烈讨论这项新技术的最佳用途。虽然我们都喜欢早期的有趣聊天和诙谐的打油诗&#xff0c;但我们很快发现&#xff0c;许多最大的人工智能机会显然都在企业中。 短短几个月内&#xff0c;这些组织就从 A…

tcp/ip, http 等协议的端口号

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

大模型应用:一文搞懂Fine-tuning,模型微调有啥好处,从理论到实操

前言 我们前面几篇博文中出现的大模型&#xff0c;都是通用的大模型。但在更专业的领域&#xff0c;需要更专业的模型&#xff0c;这就需要用到模型微调的能力。 从NLP范式发展的趋势来看&#xff0c;prompt模型的方式已经成为主流&#xff0c;prompt learning已经很成熟了&a…

Linux 搭建 Kafka 环境 - 详细教程

目录 一. Kafka介绍 1. 应用场景 2. 版本对比 二. Kafka安装 1. 前置环境 &#xff08;1&#xff09;安装JDK 2. 软件安装 &#xff08;3&#xff09;环境变量配置 &#xff08;3&#xff09;服务启动 三. Console测试 基础命令 &#xff08;1&#xff09;列出Kafk…

大模型分布式训练的第四种境界

主要内容包括&#xff1a; \1. 历史背景 \2. 分布式训练挑战 \3. 分布式训练技术体系 \4. 未来挑战 \5. Q&A 01 历史背景 自 2019 年以来&#xff0c;大语言模型发展迅猛&#xff0c;不断有新的研究成果涌现&#xff0c;包括各类预训练模型及其应用&#xff0c;如 LL…

Vue86-Vuex中的getters属性

一、getters的使用 1-1、index.js中getters的书写 计算属性computed靠return获得返回值&#xff01; 1-2、组件中getters的调用 state是数据源&#xff0c;getters是拿着数据源里的东西进行一番加工。像极了&#xff1a;data和computed 二、小结

从0到1手写vue源码

模版引擎 数组join法(字符串) es6反引号法(模版字符串换行) mustache (小胡子) 引入mustache 模版引擎的使用 mustache.render(templatestr,data)

从零开始学LangChain(3):数据接入层

LangChain 主体分为 6 个模块&#xff0c;分别是对&#xff08;大语言&#xff09;模型输入输出的管理、外部数据接入、链的概念、&#xff08;上下文记忆&#xff09;存储管理、智能代理以及回调系统&#xff0c;通过文档的组织结构&#xff0c;你可以清晰了解到 LangChain的侧…

视频网关的作用

在数字化时代&#xff0c;视频通信已经成为了人们日常生活和工作中的重要部分。为了满足不同设备和平台之间的视频通信需求&#xff0c;各种视频协议应运而生。然而&#xff0c;这些协议之间的差异使得相互通信变得复杂。因此&#xff0c;视频网关作为一种重要的网络设备&#…

2024年【安全生产监管人员】考试题及安全生产监管人员试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题根据新安全生产监管人员考试大纲要求&#xff0c;安全生产模拟考试一点通将安全生产监管人员模拟考试试题进行汇编&#xff0c;组成一套安全生产监管人员全真模拟考试试题&#xff0c;学员可通…

65.Python-web框架-Django-免费模板django-datta-able的admin_datta

目录 1.起源 2.admin_datta admin_datta\urls.py admin_datta\views.py 1.起源 前面有一篇文章介绍了django-datta-able&#xff1a;54.Python-web框架-Django-免费模板django-datta-able_danjon web框架商用免费-CSDN博客 页面是这个样子。 从template\include\sidebar.…