You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

公共header文件引入外部JS,子页面访问提示文件找不到如何解决?

问题根源

静态资源的相对路径是浏览器根据当前访问的页面URL解析的,和服务端PHP文件的include路径没有关联:

  • 访问index.php时页面URL是站点根目录,js/file.js会被解析为/js/file.js,路径正确
  • 访问/page/asd.php时页面URL处于/page/目录下,相对路径js/file.js会被拼接为/page/js/file.js,自然找不到资源
解决方案

方案1(最简通用)

直接修改header.php中的script标签src,使用站点根绝对路径即可:

<script src="/js/file.js"></script>

路径开头的/代表站点根目录,不管你在哪个层级的页面引入这个header,浏览器都会从根目录开始查找资源,不会受当前页面路径影响。

方案2(适合多环境部署场景)

如果你的站点可能部署在域名的子目录下,比如website.com/blog/这类场景,可以用PHP定义全局根路径常量,方便后续统一修改:

  1. 在公共配置文件中定义站点根URL:
// 实际部署时修改为你的站点根路径,子目录部署就填写对应子目录路径即可
define('SITE_ROOT', '/');
  1. 修改header.php的资源引入代码:
<script src="<?php echo SITE_ROOT; ?>js/file.js"></script>

后续站点迁移路径变化时,只需要修改SITE_ROOT的值即可,不需要逐个修改所有资源路径。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 00:33:03