• PHP:如果正确加载js、css、images等静态文件


      日常中,我们想要把一些静态页面放在框架上或者是进行转移时,那么静态页面上的原url加载js、css、images都会失效,那么我们应该怎么进行修改捏?

      现在仓鼠做个笔记哈

       

      这里有几个注意项:

      1、路径必须要绝对正确,基于项目之后的js、css文件位置路径必须是绝对路径

        (例如项目的位置在D://studys/aa/bb下,项目名称是cc,js文件路径是D://studys/aa/bb/cc/public/js/dd.js,那么加载路径应该是aa/public/js/dd.js)

      2、不要用绝对路径!!不要用绝对路径!!不要用绝对路径!!

       (因为用绝对路径,将文件放在其他电脑上后,js、css这些文件一样加载不出来,因为我们存放php文件的系统盘非常有可能不一样)

      3、当我们使用相对路径的时候,要善于使用$_SERVER这个全局变量去获取,一般加载这些文件使用的是dirname($_SERVER['SCRIPT_NAME'])

        ($_SERVER['SCRIPT_NAME']获取的是inde.php入口文件的相对位置,这里dirname()是指相对于inde.php上一个路径)

        (例如$_SERVER['SCRIPT_NAME']得到的结果是:aa/bb/cc/index.php,那么dirname($_SERVER['SCRIPT_NAME']得到的结果是:aa/bb/cc,这个结果一般截取到的是框架名称位置——Index.php最终位置在框架文件夹下)

        (这时候,我们再根据得到的结果,和我们放置js、css文件位置,进行一个拼接,就能得到我们访问js、css文件的相对路径)

      

       例子:

      原静态页面中,加载js、css、images的路径为:

      

      当我们放进框架后,加载这个静态文件,发现样式和图片都失效了,全页面变得乱七八糟

      

      这时候,我们只要将正确的加载js、css的路径进行修改,就能读取到啦

      1、查看我们JS、CSS、Images置放位置

      

      

      从上面我们可以看到:JS、CSS等文件,是在v1.0.2/thinkmimi/public/下

      2、再定义常量,获取项目的相对路径

    # 相对于浏览器的项目根目录地址-用于加载静态文件                 
    defined('ROOT_PATH') or define('ROOT_PATH', stripslashes(dirname($_SERVER['SCRIPT_NAME'])));

      根据上面的文件,我们可以得出,ROOT_PATH得到的相对路径为:/studys/TWO/v1.0.2,从这个路径中,我们得出,v1.0.2是整个框架的名称

      3、最后进行url拼接

      

      这时候,我们进行访问,就能正确加载到我们的静态文件啦

      

      我们打开审查元素,查看JS、CSS等文件生成的URL

      

      可以看到,加载的最终结果都是相对路径,即使文件放在其他电脑上,系统也会根据$_SERVER去获取此框架在该电脑中的相对路径的

      以上

      END

  • 相关阅读:
    把SVN和jenkins连起来--有人提代码就能自动build!
    Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
    JwtAuthenticationTokenFilter 实现shiro 利用 token 信息完成令牌登录
    Jenkins war deploy Shell
    jenkins 不执行部署 tomcat
    CentOS 7 设置 svn 开机启动
    502 Bad Gateway nginx/1.12.2 tomcat
    shiro 集成 JWT 自动获取token对应的用户信息
    org.apache.shiro.session.UnknownSessionException: There is no session with
    多角色分库情况下shiro开发
  • 原文地址:https://www.cnblogs.com/finalanddistance/p/9935753.html
Copyright © 2020-2023  润新知