PHP中链接的相对文件路径包括

时间:2017-06-27 19:29:22

标签: php html

我有一个header.php文件,我在我的网站的每个页面上都使用它作为包含。其中包括网站的导航链接。

注意:我不想使用绝对文件路径,因为我不知道要上传网站的服务器的文件夹结构。无论网站放在服务器的哪个位置,它都需要工作。考虑到这一点,我有两个问题:

1 )每当我加入header.php时,是否有一些PHP可以应用于文件路径的开头?我的网站将有许多子目录,每次我想要包含它时,精神上遍历网站指向它所驻留的文件夹只是太费时。

2 )如何确保header.php中的导航链接始终正确?例如返回主页的链接将是“../index.php”,如果它是下面的一个目录,但在其他任何地方都不起作用。

我非常感谢帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

首先制作一个包含路径的php文件(例如将其命名为ini.php并将其放在文件夹ini中):

defined("YOUR_BASE_PATH")
    or define("YOUR_BASE_PATH", realpath(dirname(__FILE__) . '/..'));

然后在header.php中执行以下操作(包括包含路径的ini文件定义):

include_once(dirname(__FILE__) . "/ini/ini.php");
include_once(YOUR_BASE_PATH  . "/nocache.php");

现在您可以轻松使用项目中的路径而无需麻烦! 相当不错的解决方案,你可以随意移动文件夹,只要你更新ini文件!

现在您已经设置了这样的内容,您可以更改所有链接以使用实际路径:

<a href="<?php echo PathToUrl(YOUR_BASE_PATH . "/index.php"); ?>">test link</a>

在header.php中为PathToUrl创建一个简单的函数:

function PathToUrl($path)
{
    $path = str_replace($_SERVER['DOCUMENT_ROOT'], '', $path)
    return $path;
}

应该这样做。

答案 1 :(得分:0)

使用魔法常量__DIR__ ...

来自PHP的文档:

  

DIR 文件的目录。如果在include中使用,则返回包含文件的目录。这相当于   目录名(文件)。此目录名称没有尾部斜杠   除非它是根目录。

然后像这样使用它:

$ file = DIR 。 “/../ somefile.txt”;

另外,在header.php(或始终首先加载的任何其他脚本中,您可以设置常量:

const PROJECT_DIR = __DIR__ . "/..";

然后始终引用PROJECT_DIR

2

这个很棘手:/我认为这不可能,而且听起来也很不安全(如果你只需添加一堆..就能访问服务器上的所有文件,例如:{ {1}}

祝你好运!

答案 2 :(得分:0)

是的,使用PHP魔术常量。请尝试以下方法:

__DIR__

在字符串开头之前将其添加到包含链接...示例:

require __DIR__ . "/file_name.php";

您可以在此处详细了解: JSON.org