相对路径文件

相对路径文件

问题描述:

我有以下目录结构的PHP项目:相对路径文件

ROOT 
    - PUBLIC 
     - CSS 
     - JS 
    - LIB 
     - CONTROLLER 

所有基本的PHP页面都是公开的文件夹下位于同时所有的控制器,模型等位于LIB或下CONTROLLER文件夹。在某些情况下,控制器完成处理后,它将包含PUBLIC文件夹中要显示的文件。我注意到包含的文件找不到关联的CSS或JS文件,因为它现在使用/LIB/CONTROLLER的相对路径。

我的问题:

  1. 是否有某种方式来设置包含的文件不同的相对路径,而不必修改每一个CSS或JS包括线?

  2. 如果我转发使用header (Location...)的控制,但在某些情况下,我不喜欢这样做,只是包括页面不会发生此问题 - 因为我将不得不从控制器传递重物使用会话页面。有没有更好的方法来实现这一目标?

+1

查看HTML5的'' – 2014-09-21 22:51:36

+0

伟大的答案 - 你可以请提交作为答案,所以我可以接受 – ChicagoSky 2014-09-21 23:05:21

+0

谢谢。我不认为这是必要的,''在其他地方有很好的记录。 – 2014-09-21 23:41:44

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

这解决了我面临的问题

使用这样的事情在您所有的PHP文件:

如果(没有定义PATH_TO_ROOT) 定义PATH_TO_ROOT = ''

所以,在你的链接之类的东西,总是让网址与该常数,像这样:

URL = PATH_TO_ROOT '/公/ CSS/mycss.css'。

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

+0

我其实有这个,但我将不得不包括这为每一个CSS文件或JS文件 - 有没有更好的选择?我所希望的是,当我包含文件时,有一种方法可以为包含文件定义相对路径。但也许这只是一厢情愿的想法 – ChicagoSky 2014-09-21 22:47:46

+0

那么,我想你可以做一个函数,检查$ _SERVER来查看请求的位置。该函数接收css rel路径并从那里计算。但我不认为这不是一种神奇的方式。 – 2014-09-21 22:51:03

/使用/绝对/路径/到处/上/你/网站

做/不/使用/相对/那些
^看,没有/slash,不是好的做法。