If the content is elsewhere on the site and you are using Apache, you
can use an internal rewrite. This happens before the content handling
phase so it is completely transparent to the client -- no special
headers.
The mod_rewrite documentation has all sorts of information on how
internal rewrites work and where they can be used (vs. proxy or a
client redirect).
This is a generic internal mechanism to Apache, so if mod_rewrite can't
do what you want (and given the power of mod_rewrite, this is fairly
rare) you can write your own handler in mod_python, mod_perl, or C that
does the trick.
You can solve the broken links issue with either more mod_rewrite rules
or by writing a content filter that fixes broken links.
If you are looking for a simple answer, use a symlink.
thornton