如何处理PHP中包含的链接?

时间:2010-11-05 23:37:10

标签: php include

我想在我的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

2 个答案:

答案 0 :(得分:6)

这是一个想法:使用绝对路径。将href设为/link1.php将链接到http://www.yourdomain.com/link1.php,无论其位于哪个子目录中。

但是,由于我不知道您的情况的细节,这可能不是一个可接受的解决方案。把它放在那里。

但是,如果您的菜单在不同的子目录中用于实际引用不同的位置,例如,在/foo/sub/index.php用于引用/foo/link1.php并在/bar/sub/index.php上用于引用/bar/link1.phpHTML 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而不是路径)