相对路径文件
我有以下目录结构的PHP项目:相对路径文件
ROOT
- PUBLIC
- CSS
- JS
- LIB
- CONTROLLER
所有基本的PHP页面都是公开的文件夹下位于同时所有的控制器,模型等位于LIB或下CONTROLLER文件夹。在某些情况下,控制器完成处理后,它将包含PUBLIC文件夹中要显示的文件。我注意到包含的文件找不到关联的CSS或JS文件,因为它现在使用/LIB/CONTROLLER
的相对路径。
我的问题:
是否有某种方式来设置包含的文件不同的相对路径,而不必修改每一个CSS或JS包括线?
如果我转发使用
header (Location...)
的控制,但在某些情况下,我不喜欢这样做,只是包括页面不会发生此问题 - 因为我将不得不从控制器传递重物使用会话页面。有没有更好的方法来实现这一目标?
正如@Jack T所回答的 - 解决这个问题的方法是在包含的PHP/HTML页面中定义<base>
元素。有一件事我学到的是,定义元素时使用完整的URL包括http://
这解决了我面临的问题
使用这样的事情在您所有的PHP文件:
如果(没有定义PATH_TO_ROOT) 定义PATH_TO_ROOT = ''
所以,在你的链接之类的东西,总是让网址与该常数,像这样:
URL = PATH_TO_ROOT '/公/ CSS/mycss.css'。
**请注意,这只是一个伪代码,而不是实际的PHP代码。
我其实有这个,但我将不得不包括这为每一个CSS文件或JS文件 - 有没有更好的选择?我所希望的是,当我包含文件时,有一种方法可以为包含文件定义相对路径。但也许这只是一厢情愿的想法 – ChicagoSky 2014-09-21 22:47:46
那么,我想你可以做一个函数,检查$ _SERVER来查看请求的位置。该函数接收css rel路径并从那里计算。但我不认为这不是一种神奇的方式。 – 2014-09-21 22:51:03
/使用/绝对/路径/到处/上/你/网站
做/不/使用/相对/那些
^看,没有/slash
,不是好的做法。
查看HTML5的' ' –
2014-09-21 22:51:36
伟大的答案 - 你可以请提交作为答案,所以我可以接受 – ChicagoSky 2014-09-21 23:05:21
谢谢。我不认为这是必要的,' '在其他地方有很好的记录。 –
2014-09-21 23:41:44