适用:511遇见 /course/ 目录静态教程页面改造,解决多页面头部底部重复修改麻烦,基于PHP include公共模板,原页面HTML内容完全保留。
🎯改造目标
- 将多个重复的静态页面公共部分(head、导航、分页、页脚、JS)抽离为公共PHP文件;
- 每个业务页面只保留中间主体main卡片内容;
- 修改导航、页脚、统计只需要修改公共文件,全部页面自动同步;
- 兼容原有HTML代码,中间部分直接写原生HTML,不用学复杂PHP;
- 处理旧链接SEO,防止404。
📁目录结构(服务器 /course/ 目录)
course/
├─ inc/ # 公共模板文件夹
│ ├─ header.php # 公共头部:DOCTYPE、head元标签、css、导航栏、上方分页
│ └─ footer.php # 公共底部:下方分页、footer版权、全部JS脚本
├─ index.php # 原 index.html 改造
├─ index1.php # 原 index1.html 改造
├─ video.php # 原 video.html 改造
├─ wydj.php # 原 wydj.html 改造
├─ yydj.php # 原 yydj.html 改造
├─ sydj.php # 原 sydj.html 改造
├─ indexa.php # 原 indexa.html 改造
├─ .htaccess # 伪静态301重定向(处理旧.html链接跳转)
└─ img/ css/ # 原有图片、css资源不动
1、公共模板文件内容
inc/header.php
作用:页面最开头,包含
<!DOCTYPE html>、head、meta、css、顶部导航、上方分页。
<?php
/**
* course公共头部模板
* @var string $page_title 页面标题
* @var string $page_brand 页面大标题
* @var string $extra_css 额外css文件,选填
*/
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title><?php echo $page_title; ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="511遇,易语言,大漠,多线程,模拟器,手游雷电API,ADB,wordpress,平面设计等视频教程。">
<!-- Favicon -->
<link href="/assets/img/brand/favicon.png" rel="icon" >
<!-- Favicons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="./img/apple-touch-icon-144-precomposed.png">
<link rel="shortcut icon" href="./img/favicon.png" type="image/png">
<!-- Icons -->
<link rel="stylesheet" href="[https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css](https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css)">
<!-- Argon CSS -->
<link type="text/css" href="./css/style.min.css" rel="stylesheet">
<?php if(!empty($extra_css)):?>
<link rel="stylesheet" href="<?php echo $extra_css;?>">
<?php endif;?>
<!-- 百度统计,需要就保留,不需要直接删掉这整块 -->
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "[https://hm.baidu.com/hm.js?15c141dd41d16b47f32d4c5476e1f6f4](https://hm.baidu.com/hm.js?15c141dd41d16b47f32d4c5476e1f6f4)";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<header class="header-global">
<nav id="navbar-main" class="navbar navbar-main navbar-expand-lg navbar-transparent navbar-light headroom">
<div class="container">
<a class="navbar-brand mr-lg-5" href="./index.php"><h1 class="text-white mb-0 text-2xl"><?php echo $page_brand; ?></h1></a>
<button class="navbar-toggler d-none" type="button" data-toggle="collapse" data-target="#navbar_global" aria-controls="navbar_global" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbar_global">
<ul class="navbar-nav align-items-lg-center ml-lg-auto">
<li class="nav-item d-none d-lg-block ml-lg-4">
<a href="[http://www.511yj.com/](http://www.511yj.com/)" target="_blank" class="btn btn-neutral btn-icon font-normal">
<span class="btn-inner--icon">
<i class="fa fa-cloud-upload mr-2"></i>
</span>
<span class="nav-link-inner--text">511遇见官网</span>
</a>
</li>
<li class="nav-item d-none d-lg-block ml-lg-4">
<a href="./wydj.php" target="_blank" class="btn btn-neutral btn-icon font-normal">
<span class="btn-inner--icon">
<i class="fa fa-cloud-upload mr-2"></i>
</span>
<span class="nav-link-inner--text">端游一键端</span>
</a>
</li>
<li class="nav-item d-none d-lg-block ml-lg-4">
<a href="./yydj.php" target="_blank" class="btn btn-neutral btn-icon font-normal">
<span class="btn-inner--icon">
<i class="fa fa-cloud-upload mr-2"></i>
</span>
<span class="nav-link-inner--text">页游一键端</span>
</a>
</li>
<li class="nav-item d-none d-lg-block ml-lg-4">
<a href="./sydj.php" target="_blank" class="btn btn-neutral btn-icon font-normal">
<span class="btn-inner--icon">
<i class="fa fa-cloud-upload mr-2"></i>
</span>
<span class="nav-link-inner--text">手游一键端</span>
</a>
</li>
</ul>
</div>
</div>
<!---右上分页导航 开始----->
<section class="section pt-0">
<nav aria-label="Page navigation">
<ul class="pagination pagination-lg justify-content-center">
<li class="page-item">
<a class="page-link" href="./video.php" title="视频教程预览">1</a>
</li>
<li class="page-item">
<a class="page-link" href="./index.php" title="教程目录-1">2</a>
</li>
<li class="page-item">
<a class="page-link" href="./index1.php" title="教程目录-2">3</a>
</li>
<li class="page-item">
<a class="page-link" href="./wydj.php" title="端游单机一键端">4</a>
</li>
<li class="page-item">
<a class="page-link" href="./yydj.php" title="页游单机一键端">5</a>
</li>
<li class="page-item">
<a class="page-link" href="./sydj.php" title="手游单机一键端">6</a>
</li>
</ul>
</nav>
</section>
<!---右上分页导航结束----->
</nav>
</header>
<main>
inc/footer.php
页面底部:底部分页、footer版权、全部js,闭合 main body html
<section class="section pt-0">
<nav aria-label="Page navigation">
<ul class="pagination pagination-lg justify-content-center">
<li class="page-item">
<a class="page-link" href="./video.php" title="视频教程预览">1</a>
</li>
<li class="page-item">
<a class="page-link" href="./index.php" title="教程目录-1">2</a>
</li>
<li class="page-item">
<a class="page-link" href="./index1.php" title="教程目录-2">3</a>
</li>
<li class="page-item">
<a class="page-link" href="./wydj.php" title="端游单机一键端">4</a>
</li>
<li class="page-item">
<a class="page-link" href="./yydj.php" title="页游单机一键端">5</a>
</li>
<li class="page-item">
<a class="page-link" href="./sydj.php" title="手游单机一键端">6</a>
</li>
</ul>
</nav>
</section>
</main>
<footer class="footer">
<div class="container">
<div class="row row-grid align-items-center mb-5">
<div class="col-lg-6">
<h3 class="text-primary font-weight-light mb-2">511遇见视频教程</h3>
<p class="mb-0 font-weight-light">提供易语言、大漠、ADB模拟器、多线程、hook注入、手游端游,模块API,平面设计,wordpress等视频教程。</p>
</div>
<div class="col-lg-6 text-lg-center btn-wrapper">
<a href="[http://bbs.511yj.com/](http://bbs.511yj.com/)" target="_blank" class="btn btn-primary btn-icon font-normal">
<span class="btn-inner--icon">
<i class="fa fa-cloud-upload mr-2"></i>
</span>
<span class="nav-link-inner--text">511遇见论坛</span>
</a>
</div>
</div>
<hr>
<div class="row align-items-center justify-content-md-between">
<div class="col-md-6">
<div class="copyright">
© 2020 511YJ.com 视频教程
</div>
</div>
<div class="col-md-6">
<ul class="nav nav-footer justify-content-end">
<li class="nav-item">
<a href="[http://www.511yj.com/archives](http://www.511yj.com/archives)" class="nav-link">关于</a>
</li>
<li class="nav-item">
<a href="[http://www.511yj.com/archives/](http://www.511yj.com/archives/)" class="nav-link">关于遇见</a>
</li>
<li class="nav-item">
<a href="[http://www.beian.miit.gov.cn/](http://www.beian.miit.gov.cn/)" class="nav-link" target="_blank"> 鲁ICP备15039387号-1</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
<!-- Core -->
<script src="[https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.slim.min.js](https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.slim.min.js)"></script>
<script src="[https://cdn.jsdelivr.net/npm/popper.js@1.14.7/dist/umd/popper.min.js](https://cdn.jsdelivr.net/npm/popper.js@1.14.7/dist/umd/popper.min.js)"></script>
<script src="[https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js](https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.min.js)"></script>
<script src="[https://cdn.jsdelivr.net/npm/headroom.js@0.9.4/dist/headroom.min.js](https://cdn.jsdelivr.net/npm/headroom.js@0.9.4/dist/headroom.min.js)"></script>
<!-- Argon JS -->
<script src="./js/argon.min.js"></script>
</body>
</html>
2、业务页面模板示例 index.php
每个页面格式完全一致,只修改页面变量,中间粘贴原页面main内的卡片HTML
<?php
//页面配置,每个页面修改这里
$page_title = '511遇见视频教程下载';
$page_brand = '511遇见视频教程';
// $extra_css = './css/xxx.css'; //需要额外css再打开
include 'inc/header.php';
?>
<!-- ========== 这里粘贴原页面 <main> 里面全部卡片HTML内容,只保留主体业务html ========== -->
<section class="section-shaped my-0 bg-center bg-cover h-120">
<!-- Circles background -->
<div class="shape shape-style-1 shape-primary alpha-4">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<!-- SVG separator -->
<div class="separator separator-bottom separator-skew z-0">
<svg x="0" y="0" viewBox="0 0 2560 100" preserveAspectRatio="none" version="1.1" xmlns="[http://www.w3.org/2000/svg](http://www.w3.org/2000/svg)">
<polygon class="fill-white" points="2560 0 2560 100 0 100"></polygon>
</svg>
</div>
</section>
<section class="section -mt-64">
<div class="container container-lg">
<div class="row">
<!-- 这里放一堆你的card卡片 -->
</div>
</div>
</section>
<?php include 'inc/footer.php'; ?>
3、.htaccess(course目录下)
作用:旧的
.html百度收录链接301永久重定向到新.php,避免404丢失收录。
# course目录 .htaccess
RedirectMatch 301 ^/course/(.*)\.html$ /course/$1.php
✅ 上线操作步骤
- 在服务器
/course/创建文件夹inc,上传header.php、footer.php; - 每个页面复制模板,把原来页面main里面卡片HTML粘贴到两个include中间,保存为
.php; - 上传
.htaccess到/course/; - WordPress后台 → 外观 → 菜单,把导航菜单里面旧
.html链接全部改成.php; - 浏览器访问各个php页面测试,样式、导航、分页、页脚全部正常;
- 测试旧html链接:访问
xxx.html会自动跳转到xxx.php。
📝后续维护规则
- 修改导航、页脚、统计、公共JS/CSS:只编辑
inc/header.php/inc/footer.php,所有页面自动生效; - 新增/修改教程卡片:编辑对应业务
.php页面,修改中间的HTML部分即可; - 新增页面:复制一份业务页面模板,修改标题变量,粘贴新页面卡片HTML,保存为新php文件;
- 不需要再复制一大段head、导航、页脚到每一个页面。
⚠️注意事项
- 路径:
inc/header.php使用相对路径,保证每个php文件直接include 'inc/header.php'; - 图片路径保持
./img/xxx.jpg相对路径不变,原有资源不动; - 如果服务器不支持
.htaccess301,就手动提交百度资源平台,把旧html链接做改版提交; - PHP文件里面,中间的HTML完全原生写法,不需要写任何PHP,和写html一样。
如果你需要,我可以把 index.php / index1.php 完整成品直接输出,复制即可上传。