首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP包含文件中的href链接与根目录无关

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

Stack Overflow用户
提问于 2018-10-19 21:22:01
回答 1查看 59关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2018-10-19 21:54:39

我为我的项目写了一个函数,你可以使用它。也许有一种更有效的方法,但它是有效的。我所做的就是在我引用的所有文件前面添加这个getRoot()函数。

代码语言:javascript
复制
 /**
 * 
 * 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;
}

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

代码语言:javascript
复制
define('ROOT_DIR', __DIR__);

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

代码语言:javascript
复制
$file = getRoot()."path/to/file";

基本上,这个函数会添加正确的../的数量,让你回到根文件夹,然后你可以在此基础上通用地设置任何变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52893230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档