我有一个PHP文件,我正在使用作为我的网站的每个页面的模板头。但是PHP模板头文件中的链接不是相对于根目录的,当我在根文件夹的更深的子文件夹中创建一个新页面时,它们不会自动更新。
例如:
带有<?php include("header.php") ?>的home/index.php
带有<?php include("../header.php") ?>的home/2ndfolder/index.php
主页/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,这可能是问题所在,我不确定。
发布于 2018-10-19 21:54:39
我为我的项目写了一个函数,你可以使用它。也许有一种更有效的方法,但它是有效的。我所做的就是在我引用的所有文件前面添加这个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";基本上,这个函数会添加正确的../的数量,让你回到根文件夹,然后你可以在此基础上通用地设置任何变量。
https://stackoverflow.com/questions/52893230
复制相似问题