PHP中有没有更简便的方法为子目录关联引入CSS、JS等静态资源?
PHP子目录文件静态资源路径统一解决方案
出现路径差异的核心原因是:CSS等静态资源的相对路径是相对于浏览器当前访问的URL地址,而非PHP文件在服务器上的磁盘存储路径,以下是3种可直接落地的方案:
- 使用站点根目录绝对路径
所有CSS路径统一以/开头,写法为/css/file.css。该路径会直接定位到站点根目录下的对应资源,不管你是在根目录的PHP文件还是pages子目录的PHP文件中引用,都能正常加载,完全不需要区分是否加../。如果本地开发时项目存放在站点子目录下(比如访问地址为localhost/myproject/),只要统一加项目前缀写成/myproject/css/file.css即可,上线时统一删除前缀即可。 - 定义PHP全局路径常量
在项目公共配置文件(所有页面都会提前引入的公共文件)中定义根路径常量:
所有页面引入CSS时统一写:// 本地开发环境写法,上线时修改为对应站点根路径即可 define('STATIC_ROOT', '/myproject/');
路径统一由常量控制,不管页面在哪个目录层级都不需要修改引用写法,调整路径只要改常量值即可。<link rel="stylesheet" href="<?php echo STATIC_ROOT; ?>css/file.css"> - 添加base标签统一基准路径
在所有页面公用的head头部(一般是你用include引入的公共头部文件)中添加base标签:
添加后页面内所有相对路径都会自动以<!-- 本地开发写对应的本地根地址,上线改正式域名即可 --> <base href="http://localhost/myproject/">href属性的值为基准,直接写css/file.css在任意子目录页面都可以正常加载。注意如果使用页内锚点(例如#top),需要补全当前页面完整路径再拼接锚点,否则会基于base路径跳转。
内容的提问来源于stack exchange,提问作者Chloe Lola
相关产品推荐
相关产品推荐

