我有一个PHP项目,目录结构如下:
ROOT
- PUBLIC
- CSS
- JS
- LIB
- CONTROLLER
所有的基本PHP页面都位于PUBLIC文件夹下,而所有的控制器、模型等都位于LIB或CONTROLLER文件夹下。在某些情况下,在控制器完成处理后,它将包含PUBLIC文件夹中的一个文件以进行显示。我注意到,包含的文件找不到相关的CSS或JS文件,因为它现在使用的是/LIB/CONTROLLER
的相对路径。
我的问题:
有没有办法为包含的文件设置一个不同的相对路径,而不必修改每一个CSS或JS包含行?
如果我使用
header (Location...)
转发控件,则不会出现此问题,但在某些情况下,我宁愿不这样做,只包含页面,因为我将不得不使用SESSION将重对象从控制器传递到页面。有没有更好的方法来实现这一点?
正如@Jack T所回答的那样,这个问题的解决方案是在包含的PHP/HTML页面中定义<base>
元素。我学到的一件事是,在定义元素时使用完整的URL,包括http://
这解决了我面临的问题
在所有php文件上使用类似的东西:
if(未定义PATH_TO_ROOT)define PATH_TO_ROOT='.'
所以,在你的链接和其他东西中,总是用这个常量制作url,比如:
url=PATH_TO_ROOT.'/public/css/mycss.css';
**请注意,这只是一个伪代码,而不是实际的PHP代码。
/use/absolute/paths/everywhere/on/your/site
do/not/use/relater/ones
^请参阅,没有/slash
,这不是好的做法。