PHP多目录引入公共header.php时路径不匹配问题求解决方案
PHP跨目录引入公共header路径错误解决方案
1. 前端静态资源统一使用站点根绝对路径
这是最简便的适配方案,适配所有CSS、JS、图片等前端资源引用:
- 将header.php内所有关联AdminSection目录的资源路径,开头统一加
/,例如原写法../AdminSection/css/nav.css改为/AdminSection/css/nav.css - 路径开头加
/后,浏览器会直接从站点根目录开始查找资源,和当前执行的PHP文件所在目录完全无关,不管在哪个层级的页面引入header,资源都能正常加载 - 补充:如果项目部署在站点子目录下,将前缀改为子目录路径即可,例如项目根目录为
/my_php_project/,就写/my_php_project/AdminSection/css/nav.css
2. PHP内部文件引用统一绑定根目录常量
如果同时存在PHP文件互相引入的路径问题,增加全局常量定义即可解决:
- 在项目根目录新建公共配置文件
config.php,添加代码:define('PROJECT_ROOT', __DIR__); - 所有需要引入其他PHP文件的位置,都用常量拼接绝对路径,例如引入header.php就写:
require_once PROJECT_ROOT . '/header/header.php'; - 该方案为PHP层面的绝对路径引用,完全不受当前文件所在目录影响
3. 可选方案:用base标签统一页面路径基准
如果不想逐个修改静态资源路径,可以在header输出的HTML的<head>标签内添加base标签:<base href="http://你的站点域名/项目根目录/">
- 添加后页面内所有相对路径都会以base标签的href属性为基准查找,同样可以解决跨目录引用的路径错误,注意本地开发和线上部署时同步修改href值即可
内容的提问来源于stack exchange,提问作者Anshul
相关产品推荐
相关产品推荐

