我想在我的php页面中包含一个菜单。像这样:
index.php中的
require_once 'includes/menu.php';
在dir / index.php
中require_once 'includes/menu.php';
在menu.php中的我有:
<a href='link1.php'>Link 1</a>
<a href='link2.php'>Link 2</a>
<a href='link3.php'>Link 3</a>
问题是子目录和根的路径应该不同。 我如何处理这个问题,以便索引的输出为 link1.php ,子目录的输出为 ../ link1.php ?
我找到了这个链接,但问题不是很清楚,所以我不知道是否相关: Change relative link paths for included content in PHP
答案 0 :(得分:6)
这是一个想法:使用绝对路径。将href设为/link1.php
将链接到http://www.yourdomain.com/link1.php
,无论其位于哪个子目录中。
但是,由于我不知道您的情况的细节,这可能不是一个可接受的解决方案。把它放在那里。
但是,如果您的菜单在不同的子目录中用于实际引用不同的位置,例如,在/foo/sub/index.php
用于引用/foo/link1.php
并在/bar/sub/index.php
上用于引用/bar/link1.php
,HTML base tag可能会派上用场。
答案 1 :(得分:0)
我建议将“基本”URL定义为应用程序配置的一部分,并为其添加前缀。
(注意,您可以在运行时计算基本网址 - 但是对于应用的不同部分需要不同的逻辑 - 除非应用的“根”目录始终保持不变,例如
function get_app_root($fromthis)
{
if (basename(fromthis)=='myapproot') {
return $fromthis;
}
if (dirname($fromthis)=='') {
return false;
}
return get_app_root(dirname($fromthis));
}
$appbase=get_app_root(__FILE__);
if ($appbase===false) {
die "Whoops!";
}
(需要一些调整来处理URL而不是路径)