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

I want to include a menu in my php pages. Like this:

in index.php

require_once 'includes/menu.php';

in dir/index.php

require_once 'includes/menu.php';

in menu.php I have:

<a href='link1.php'>Link 1</a>
<a href='link2.php'>Link 2</a>
<a href='link3.php'>Link 3</a>

The problem is that the path should be different for the subdirectory and the root. How I can handle this, so that the output is link1.php for the index, and ../link1.php for the sub directories?

I found this link, but the question is not very clear, so I don´t known if is related: Change relative link paths for included content in PHP

Here's one thought: use absolute paths. Putting the href as /link1.php will link to http://www.yourdomain.com/link1.php, regardless of what subdirectory one is in.

Since I don't know the particulars of your situation, however, that may not be an acceptable solution. Just putting it out there.

If your menu is used in different subdirectories to actually refer to different locations, however, e.g. used at /foo/sub/index.php to refer to /foo/link1.php and also used at /bar/sub/index.php to refer to /bar/link1.php, then the HTML base tag might come in handy.

I'd recommend defining a 'base' URL as part of the application config and prefixing any links with that.

(NB you can caclulate the base url at run time - but need different logic for different parts of the app - unless the 'root' directory of your app is always constant, e.g.

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!";
}

(would need a few tweaks to handle URLs rather than paths)