PHP项目中非同目录样式表的<link>标签引用方案咨询
解决PHP项目中通过引用样式表的问题
问题核心
你的PHP服务器以public文件夹为根目录启动,浏览器请求资源时只会以public为基准解析URL,而非PHP文件的物理磁盘路径,这是之前方法失效的关键:
- 相对路径
../../styles/style.css会因当前路由URL(如/post)解析错误,导致浏览器找不到资源; - 用
__DIR__输出的是服务器本地磁盘路径,浏览器无法识别这类文件路径。
可行解决方案
方案1:创建软链接(推荐,不改动原目录结构)
在public目录下创建指向项目根目录styles文件夹的软链接,让浏览器能通过服务器根路径访问到样式文件:
- Linux/macOS:打开终端执行
cd public ln -s ../styles styles - Windows(需管理员权限):打开命令提示符执行
cd public mklink /D styles ..\styles
之后在header.php中使用基于服务器根目录的绝对路径引用样式:
<link rel="stylesheet" type="text/css" href="/styles/style.css">
方案2:定义站点基准URL常量
在public/index.php中定义站点根URL常量:
define('BASE_URL', 'http://localhost:3006/');
然后在header.php中使用该常量拼接路径:
<link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>../styles/style.css">
注:
../用于跳出public根目录,指向项目根的styles文件夹,仅在服务器以public为根目录时有效。
方案3:迁移styles文件夹
直接将项目根目录下的styles文件夹移动到public目录内,之后同样用绝对路径引用:
<link rel="stylesheet" type="text/css" href="/styles/style.css">
内容的提问来源于stack exchange,提问作者mqbaka mqbaka
相关产品推荐
相关产品推荐

