使用PHP include引入公共menu时跨目录CSS路径失效问题咨询
问题解决方案
首先你提到的两种方案都不建议采用:
- 为每个子目录单独创建menu.php会破坏公共模块的复用性,后续维护成本大幅提升,完全背离你引入公共include模块的初衷
- 同时添加两条不同路径的CSS引入语句会导致每次页面加载都有一条请求返回404,浪费请求资源,甚至可能引发部分浏览器的样式加载异常
你可以选择以下两种更合理的方案解决路径适配问题:
方案1:根路径绝对引用(绝大多数场景优先推荐)
直接修改公共menu.php里的CSS引入路径,使用以/开头的站点根绝对路径,示例代码如下:
<link rel="stylesheet" href="/index.css">
以/开头的路径会让浏览器直接从站点域名根目录开始查找资源,无论当前页面处于几级子目录下,都能正确定位到根目录的index.css文件,无需添加任何额外PHP逻辑,适配所有层级页面。
方案2:动态拼接站点根路径(适合站点部署在子目录的场景)
如果你的站点不是部署在域名根目录,而是放在类似子目录的路径下,可以先在全局公共配置文件中定义站点根路径常量:
// 配置值改为你站点的实际根路径 define('SITE_ROOT', '/你的站点子目录/');
再修改menu.php中的CSS引入语句,动态拼接常量路径:
<link rel="stylesheet" href="<?php echo SITE_ROOT; ?>index.css">
后续如果站点根路径发生变更,仅需要修改一次SITE_ROOT常量即可全站同步生效。
内容的提问来源于stack exchange,提问作者tetro
相关产品推荐
相关产品推荐

