1

好的,标题有点混乱,但这是我网站的结构:

/
|--header.php
|--page1.php
+--css
   |--style.css
+--subsection
   |--page2.php
+--functions
   |--classes.php

对,所以两者page1.php都会。我只使用从任何 php 页面到 header.php 的相对文件路径来做到这一点。page2.phpinclude header.php

header.php本身包含其他文件;例如css/style.cssfunctions/classes.php

我可能会像下面这样包括它们:

<link rel="stylesheet" href="css/style.css">

<?php require_once("functions/classes.php"); ?>

这将起作用,page1.php因为相关路径是正确的。因为subsection/page2.php这将失败,因为路径应该是../css/style.css并且../functions/classes.php仍然保持在header.php.

我的问题是如何让 header.php 始终为其包含使用正确的相对文件路径,而不管文件调用header.php(例如apage.php)位于网站目录中的什么位置。

4

4 回答 4

1

设置 css /functions 的基本路径:

define('CSS_BASE','insert/full/path/here');

然后使用 header.php 访问 css

<link rel="stylesheet" href="<?=CSS_BASE;?>/style.css">
于 2013-07-18T11:40:38.683 回答
0

当我这样做时,我$urlStart在每个页面的开头(page1.phppage2.php)设置了一个变量(例如),其中包含主目录的相对路径(例如,page1.php将有$urlStart='./'page2.php将有$urlStart='../')。然后在你的header.php,在每个 URL 的开头使用这个变量。像这样:

<link rel="stylesheet" href="<?php echo $urlStart;?>css/style.css">

<?php require_once($urlStart . "functions/classes.php"); ?>
于 2013-07-18T11:24:58.210 回答
0

对于 php 包含,使路径相对于 header.php 是可以的。

对于 css 文件,您应该使用绝对路径,例如<link rel="stylesheet" href="/css/style.css">.

编辑:css/javascripts 文件不是“包含”;这些是 html 标签,因此它们将由浏览器在客户端进行处理。这就是为什么路径应该相对于 html 所在页面的 url,而不是它在服务器上的位置的原因。

于 2013-07-18T11:25:48.710 回答
-1

如果您在 page1 中包含 page2.php,那么您的路径将起作用。无需返回上一个文件夹。

于 2013-07-18T11:23:59.573 回答