【问题标题】:Relative paths for included PHP files包含的 PHP 文件的相对路径
【发布时间】:2014-11-15 20:32:52
【问题描述】:

我有一个 PHP 项目,其目录结构如下:

ROOT
    - PUBLIC
        - CSS
        - JS
    - LIB
        - CONTROLLER

所有基本的 PHP 页面都位于 PUBLIC 文件夹下,而所有控制器、模型等都位于 LIB 或 CONTROLLER 文件夹下。在某些情况下,控制器完成处理后,它会包含来自 PUBLIC 文件夹的文件以进行显示。我注意到包含的文件找不到关联的 CSS 或 JS 文件,因为它现在正在使用 /LIB/CONTROLLER 的相对路径。

我的问题:

  1. 有没有什么方法可以为包含的文件设置不同的相对路径,而不必修改每一个 CSS 或 JS 包含行?

  2. 1234563使用 SESSION 的页面。有没有更好的方法来实现这一点?

【问题讨论】:

  • 查看 HTML5 的 <base>
  • 很好的答案 - 请您提交作为答案,以便我接受
  • 谢谢。我认为这没有必要,<base> 在其他地方都有很好的记录。
  • 为什么要包含 CSS 和 JS 文件?您应该分别通过 linkscript 元素链接它们。路径是一样的,那么不管服务器端脚本的哪一部分生成的。
  • 这就是我说我包含它们时的意思

标签: php html css


【解决方案1】:

/use/absolute/paths/everywhere/on/your/site

做/不/使用/相对/一个
^ 看,没有/slash,不是好习惯。

【讨论】:

    【解决方案2】:

    正如@Jack T 所回答的那样 - 这个问题的解决方案是在包含的 PHP / HTML 页面中定义 <base> 元素。我学到的一件事是,在定义元素时使用完整的 URL,包括 http://

    这解决了我面临的问题

    【讨论】:

      【解决方案3】:

      在你所有的 php 文件上使用这样的东西:

      如果(未定义 PATH_TO_ROOT ) 定义 PATH_TO_ROOT = '.'

      所以,在你的链接和东西中,总是用这个常量来制作网址,像这样:

      url = PATH_TO_ROOT.'/public/css/mycss.css';

      ** 请注意,这只是一个伪代码,而不是实际的 PHP 代码。

      【讨论】:

      • 我实际上有这个,但我必须为每个 CSS 文件或 JS 文件包含这个 - 有更好的选择吗?我希望的是,当我包含该文件时,有一种方法可以定义该包含文件的相对路径。但也许这只是一厢情愿
      • 好吧,我想您可以创建一个函数来检查 $_SERVER 以查看请求位置。该函数接收 css rel 路径并从那里计算。但我不认为有什么神奇的方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2013-04-09
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多