我已经设法自学了 PHP/PDO/SQL,但是,我终其一生都无法弄清楚相对路径在 PHP 和 HTML 中是如何工作的。我有一个带有几个目录和分支的多页网站,我希望能够创建一个简单的模板,可以用来制作新页面,而不必每次都更改指向我的样式表和 PHP 的链接,具体取决于目录。
这是我的布局如下:
MySite (http://localhost/MySite/)
RESOURCES //Not a folder, just here for readability
> serverside > initialize.php
> templates > header.php
footer.php
navuser.php
navmenu.php
> styles > styles.css
> images > variousImages.png
PAGES //Not a folder, just here for readability
> index.php
login.php
register.php
gettingstarted.php
> you > settings > settings.php
> youraccount.php
> yourfavourites.php
以下是游戏规则: 每个页面首先包含serverside/initialize.php文件(PHP 包含)。然后,每个页面都通过标准的 HTML href 属性包含样式/styles.css 。然后,每个页面都通过 PHP 包含templates/header.php和templates/footer.php,前者还包含templates/navuser.php和templates/navmenu.php。
问题是,如果其中一个页面位于不同的级别(例如 you/settings/settings.php),那么所有这些包含和 href 都必须更改,这似乎会影响包含中的包含。不可能!
我想要的只是能够在不使用真正的绝对路径的情况下指定文件名,因此如果需要,我可以在整个网站中复制一个模板文件 - 我已经研究过__DIR__
, __FILE__
, $_SERVER['DOCUMENT_ROOT']
, 将变量 $dir 转换为文档root,但没有成功。我也不明白发生了什么。
任何人都可以阐明我的情况吗?我本质上是在寻找有关相对根/链接/文件如何在 PHP 中工作的完整解释。如何处理更复杂的目录结构?再次,我该怎么办?谢谢。