多个PHP页面共用header.php时如何为不同页面设置独立h1标题
实现方案说明
完全可以在共用header.php的前提下,实现不同页面差异化展示h1标题的需求。
对您现有两种思路的评估
- 拆分公共代码为上下两段的方案:功能可实现,但会提高公共代码的维护成本,后续修改公共结构需要同步调整两个文件,出错概率高,不推荐使用。
- JS动态修改h1的方案:功能可实现,但属于客户端渲染逻辑,存在两个明显缺陷:一是对SEO不友好,搜索引擎爬取时可能无法识别到正确的h1标题内容;二是如果用户禁用浏览器JS功能,标题会显示异常,不推荐作为首选方案。
最优实现方案(PHP服务端渲染)
方案1:页面手动定义标题变量(灵活度最高)
步骤1:在各业务页面引入header.php前先定义页面专属标题
以三个页面为例:home.php 代码:
<?php $page_h1 = "首页"; include "./components/header.php"; ?> <!-- 页面其他内容 -->
contact.php 代码:
<?php $page_h1 = "联系我们"; include "./components/header.php"; ?> <!-- 页面其他内容 -->
portfolio.php 代码:
<?php $page_h1 = "作品集"; include "./components/header.php"; ?> <!-- 页面其他内容 -->
步骤2:修改header.php中的h1标签逻辑
<!-- header.php 公共头部代码中的h1部分 --> <h1> <?php // 判断变量是否存在,存在则输出对应标题,否则输出默认值避免报错 echo isset($page_h1) ? htmlspecialchars($page_h1) : "默认站点标题"; ?> </h1>
该方案优势:灵活度极高,每个页面可以自定义任意标题内容,无需修改公共逻辑,服务端渲染对SEO友好,无额外依赖。
方案2:header自动识别页面匹配标题(维护成本最低)
如果不想在每个页面手动定义变量,可以直接在header.php中自动判断当前页面文件名,输出对应标题,代码如下:
<?php // header.php 中添加该逻辑 $current_page = basename($_SERVER['PHP_SELF']); // 配置页面和标题的映射关系,新增页面只需在这里加对应规则即可 $h1_map = [ 'home.php' => '首页', 'contact.php' => '联系我们', 'portfolio.php' => '作品集' ]; ?> <h1> <?php echo isset($h1_map[$current_page]) ? $h1_map[$current_page] : "默认站点标题"; ?> </h1>
该方案优势:业务页面不需要做任何修改,后续新增页面只需更新header里的映射关系即可,维护成本极低。
内容的提问来源于stack exchange,提问作者MatyasBlaha
相关产品推荐
相关产品推荐

