ThinkPHP5框架引入的css等外部资源文件没有生效

静态资源文件一般是放在public目录里,不只是css,只要是静态资源文件都没有显示出来。
(更好的阅读体验可访问 这里

问题陈述

文件结构

文件内容

三个文件分别为:Index.php、test.html、test.css

//Index.php
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
    public function index()
    {
        return $this->fetch();
    }
}
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>This is the test</title>
    <link rel="stylesheet" href="/static/test.css">
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>
/*test.css*/
h1 {
    color: red;
}

为了方便问题陈述,使用了虚拟主机。集成环境为xampp,不使用也可,本质上都是一样的。不能配置虚拟主机可参考最后的方法

虚拟主机的配置

  1. 找到服务器 apache\conf\extra\httpd-vhosts.conf 文件,配置以下内容

    最重要的就是标记的两行,可见我把 服务器名(ServerName)test.io 映射到了 我的项目文件 test目录
  2. 配置host文件,完成域名 test.io 到本地服务器 127.0.0.1 的映射
    用管理员打开 C:\Windows\System32\drivers\etc\hosts 文件,在末尾添加
  3. 重启服务器,在浏览器输入 http://test.io/public/ 就直接访问到了我们的test项目文件。

出现的问题

也就才开始显示出本文的重点:我们之前引入的 test.css 没有生效

原因分析

我们在引入 css 文件的时候,使用的是<link rel="stylesheet" href="/static/test.css">
可见,我们默认是把 public目录 作为根目录来使用的( /static 在 public 目录下)
而我们在配置虚拟主机的时候,使用的是DocumentRoot "C:/xampp/htdocs/www/test/" 是把 test 项目文件作为根目录使用。代码使用的根目录与项目实际根目录不在同一位置。所以,引入的文件不能正确的显示出来。

解决方法

  1. 修改虚拟主机对应的目录为DocumentRoot "C:/xampp/htdocs/www/test/public/,把根目录直接映射到public目录,重启服务器。这样就可以在 html 文件里直接使用 /static 来引入静态资源文件。
    最终的效果:
  2. 修改html 引入外部文件的代码为:<link rel="stylesheet" href="/public/static/test.css">,这样也能使用引入的文件,不过自然是麻烦一些。
    最终的效果:

如果没有配置虚拟主机,在浏览器直接输入的 127.0.0.1,可根据显示出的内容,自行判断所处的位置,然后调整代码或修改配置文件。
例如:如果出现的是这种

发现直接定位的是项目主文件。那么就需要在代码中这样使用:<link rel="stylesheet" href="/public/static/test.css">。然后点击 public/ 即可正确显示。反之,如果直接显示出了页面,就不用再加 /public 了。

原文地址:https://www.cnblogs.com/sfriend/p/11283881.html

时间: 2024-10-11 22:54:56

ThinkPHP5框架引入的css等外部资源文件没有生效的相关文章

SpringMVC 无法加载js,css等静态资源文件

最近在一些技术群里看到有些朋友的馈,SpringMVC 无法加载js,css等静态资源文件,运行时报无法找到异常.下面说下原因及解决方法: 由于SpringMVC支持较优雅的Rest风格的URL,url-patten又是配置的支持所有的模式,所以对于静态资源(css,js,html等)也会去进行匹配,一旦匹配失败控制台会抛URI匹配异常. 这种情况下,需要在SpringMVC配置中增加默认的配置 <mvc:default-servlet-handler/> 增加了上面这个配置之后,原来的Req

vue如何导入外部js文件(es6)

也许大家都是使用习惯了es5的写法喜欢直接用<Script>标签倒入js文件,但是很是可惜,这写法.在es6,或则说vue环境下不支持 真的写法是怎样? 首先.我们要改造我们要映入的外部js文件,改成下面这个格式.主要是红色方块内部代码,我们需要将我们的模块"抛出",让人能获取到 代码: [html] view plain copy function realconsole(){ alert("hello.thanks use me"); } expor

Webpack 使用url-loader和file-loader打包资源文件

在js中不仅可以通过import引入js文件,还可以引入图片.视频等资源文件,这样webpack打包时就会把所引入的资源文件也一起打包进来 打包进来的文件会返回一个字符串:即文件的路径 要做到这一点,需要一个工具,file-loader,使用方法很简单那 1. 安装 npm install file-loader --save-dev 2. 配置 { test: /\.(png|jpg|jpeg|gif)$/, use: [ { loader: 'file-loader', options: {

Android Webview 加载外部html时选择加载本地的js,css等资源文件

在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片等资源会比较大,如果直接从网络加载会导致页面加载的比较慢,而且会消耗比较多的流量.所以这些文件应该放在assets里面同app打包. 要解决这个问题需要用到API 11(HONEYCOMB)提供的shouldInterceptRequest(WebView view, String url) 函数来加载本地资源.在API 21又将这个方法弃用了,是重载一个新的shouldInterceptRequest,

转:Android Webview 加载外部html时选择加载本地的js,css等资源文件

原文地址:http://m.blog.csdn.net/blog/qduningning/43196819 在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片等资源会比较大,如果直接从网络加载会导致页面加载的比较慢,而且会消耗比较多的流量.所以这些文件应该放在assets里面同app打包. 要解决这个问题需要用到API 11(HONEYCOMB)提供的shouldInterceptRequest(WebView view, String url) 函数来

外部引入的CSS文件名后面的问号的作用是什么

外部引入的CSS文件名后面的问号的作用是什么: 大家看网页的代码的时候有时候会发现通过<link>标签引入的外部CSS文件名称后面会有个问号,并且问号后面一般会跟有一些乱起八糟的字符,本站也是如此,截图如下: 或许大家以为问号后面的字符有着特殊的含义,其实并不是这样,可以修改成任何字符,它就如同是此CSS文件的一个版本号,例如当网页被访问过之后,可能在缓存中存有原来的CSS样式,尽管可能服务器的CSS文件已经更新,但是浏览者并不能得到更新,如果加上问号和后面的字符,就能及时更新网页CSS样式.

java Web程序使用wro4j合并、压缩js、css等静态资源

在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度,大大提升了用户体验. 所以,互联网各类网站,会通过各种手段,对静态文件进行合并.压缩,动静分离,使用CDN加速等.以此达到网站访问速度的优化.everycoding.com官网使用的是Java语言开发.因此使用了Java 方面的第三方Jar:wro4j来压缩Js.CSS.本文主要介绍Java We

phpstudy安装ThinkPHP5框架

phpstudy安装ThinkPHP5框架 步骤: 1,进入ThinkPHP官网,下载完整版本:http://www.thinkphp.cn/ 2,解压出下载的 ThinkPHP 复制所有文件 3,在 phpstudy 安装路径下的找到 www 文件夹,新建 tp5 文件夹,将解压的所有 ThinkPHP 文件粘贴到tp5中 4,重启 phpstudy 5,在浏览器中输入 http://localhost/tp5/public/ 6,显示为 “ ThinkPHP V5十年磨一剑 - 为API开发

WebResource-asp.net自定义控件引用外部资源方法

在asp.net中开发自定义控件时,如果我们要用到图片,外部css,js等文件,那么最好的方式就是将这些文件作为自定义控件嵌入的资源,随着控件一起打包成dll文件发布.那么我们要如何将这些文件设置为嵌入的资源,又如何在自定义控件引用这些文件呢?下面我们以一个css与js文件为例来做一演示. 一,首先当然是创建这两个文件了.我们在自定义控件的项目内创建两个文件,分别为JScript.js与Stylessheet.css文件.要使它们成为嵌入的资源,最重要的是在文件目录上点击右键,选择属性,在生成操