繁体   English   中英

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

[英]A href links in PHP include file are not relative to the root

我有一个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,这可能是问题所在。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM