处理相对路径/基本标记的最佳方式


Best way to deal with relative paths/base tag

好吧,所以我遇到了嵌套php includes的问题,我想知道什么是最佳实践和易用性的良好折衷。

这是我的网站结构:

root
  - index.php
  -/include
    - header.php
    - footer.php
  -/articles
    -article-1.php
  -/css
    -style.css

问题是:在index.php中,我有一个include "include/header.php"。在header.php中,我有许多相对路径,例如<link href="css/style.css>。在文章-1.php中,我也有include "include/header.php"

所以索引文件是有效的。但是article-1文件看不到css文件,因为相对链接现在正在寻找/articles/css/style.css。我发现了<base>标记,并在header.php中设置了它,它解决了我所有的问题,除了锚链接(如果必须的话,我可以使用javascript来解决),但我仍然关心最佳实践是什么。我应该如何正确地做到这一点,而不必用一个巨大的php行为每个相对链接做准备,也不必使用javascript破解来使锚链接工作?

谢谢!

我最终在标题中使用了<base>标记,然后在任何需要锚链接的地方,我都使用了类似的php:<a href="http://<?php echo $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI];?>#">

这使得链接指向当前页面,末尾添加了#,因此与使用<a href="#"> 相同

如果你认为我本可以做得更好,请告诉我!谢谢

我想你可以用"../"上一个目录,当前目录是"./"

因此,从root/article/article-1.php,您可以使用/css/style.css

<link href="../css/style.css">

在我看来,这种情况下的最佳实践是返回根目录,前提是您的项目位于服务器/Web空间的根目录中。

在链接的开头使用"/",这是一个绝对路径。

示例:/css/style.css实际上是根目录->css文件夹->style.css文件