PHP 包含文件中的 href 链接不是相对于根目录的



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

例如

首页/索引.php 与<?php include("header.php") ?>

首页/第二文件夹/索引.php 带<?php include("../header.php") ?>

首页/第二文件夹/第三文件夹/索引.php带<?php include("../../header.php") ?>

每个索引文件侦听相同的标头.php。 标题内的链接.php具有:

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

每个 index.php 文件在浏览器中显示标头.php但每个索引的链接不同.php。它们要么是太多的文件夹,要么不够。

因此,链接不是与标题.php的位置有关,而是与当前索引有关.php我在浏览器中预览。

我正在使用Coda2,这可能是问题所在,我不确定。

我为我的项目编写了一个您可以使用的函数。可能有更有效的方法,但它有效。我所做的是将此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";

基本上,该函数将添加正确的 ../'s 将您设置回根文件夹。然后,您可以基于此通用地设置任何变量。

最新更新