PHP包含文件中的href链接与根目录无关

时间:2018-10-19 13:22:01

标签: php path include relative coda

我有一个php文件,用作我网站每个页面的模板标题。但是,当我在根文件夹的更深子文件夹中创建新页面时,php模板头文件中的链接不是相对于根的,并且不会自动更新。

例如

home / index.php与<?php include("header.php") ?>

home / 2ndfolder / index.php与<?php include("../header.php") ?>

home / 2ndfolder / 3rdfolder / index.php与<?php include("../../header.php") ?>

每个索引文件都侦听相同的header.php。 而且header.php中的链接具有:

例如<a href="../folder_x/">

每个index.php文件在浏览器中显示header.php,但是每个index.php的链接都不同。它们要么返回的文件夹太多,要么不够。

因此,链接不是与header.php的位置有关,而是与当前在浏览器中预览的index.php有关。

我使用的是Coda2,我不确定。

1 个答案:

答案 0 :(得分:0)

我为我的项目编写了一个可以使用的函数。也许有一种更有效的方法,但是它可以工作。我要做的是将此getRoot()函数添加到我正在引用的所有文件的前面。

 /**
 * 
 * Return the root of the current page so we can call any page from any folder
 * 
 */
function getRoot(){
    $root = ROOT_DIR;
    $root = str_replace("\\", "/", $root);
    $pageroot = getcwd() ."/";
    $pageroot = str_replace("\\", "/", $pageroot);
    $root = str_replace($root."/", '' , $pageroot);
    $root = preg_replace("#(/.*?).*?(/)#", '/../', "/".$root);
    $root = substr($root, 1);
    return $root;
}

然后在根文件夹中的页面上设置此行。 **必须在您的根文件夹中定义。

define('ROOT_DIR', __DIR__);

最后,您可以像这样调用函数

$file = getRoot()."path/to/file";

基本上,该功能将添加正确的../数量,以将您设置回根文件夹。然后,您可以基于此设置所有变量。