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

.htaccess重写规则下本地资源加载失败问题求助

解决CSS文件引入路径错误问题

项目目录结构

root
 |--vendors
    |--mdi
       |--css
          |--materialdesignicons.min.css
    |--typicons
       |--css
          |--typicons.css
 |--view
    |--header.php

header.php 代码情况

原始代码

<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">

使用dirname(__DIR__)修改后的代码

<link rel="stylesheet" href="<?php echo dirname(__DIR__) ?>/vendors/mdi/css/materialdesignicons.min.css">

错误信息

Not allowed to load local resource: file:///C:/xampp_v7_3_27/htdocs/mywebsite/vendors/mdi/css/materialdesignicons.min.css

问题原因

dirname(__DIR__)返回的是服务器本地文件系统的物理路径,浏览器会将其解析为file://协议的本地资源。但网站运行在HTTP/HTTPS协议下,浏览器出于安全限制,禁止跨协议加载资源,因此触发报错。

解决方案

方案1:使用网站根目录绝对路径(推荐)

直接以/开头指定资源路径,该路径基于网站根目录,不受URL重写规则影响:

<link rel="stylesheet" href="/vendors/mdi/css/materialdesignicons.min.css">
<link rel="stylesheet" href="/vendors/typicons/css/typicons.css">

注意:如果项目部署在网站子目录(比如htdocs/mywebsite),需要在路径开头追加子目录名称,例如/mywebsite/vendors/...

方案2:通过PHP生成网站根URL

利用服务器环境变量生成网站的HTTP/HTTPS根URL,确保资源路径使用网页协议:

// 生成网站基础URL
$base_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];
// 若项目在子目录,追加子目录路径,示例:$base_url .= '/mywebsite';
?>
<link rel="stylesheet" href="<?php echo $base_url; ?>/vendors/mdi/css/materialdesignicons.min.css">
<link rel="stylesheet" href="<?php echo $base_url; ?>/vendors/typicons/css/typicons.css">

方案3:修正相对路径

基于header.php所在的view目录,使用../回到项目根目录,再指向资源:

<link rel="stylesheet" href="../vendors/mdi/css/materialdesignicons.min.css">
<link rel="stylesheet" href="../vendors/typicons/css/typicons.css">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:05:16