如何从不同的文件中将相对URL映射到不同的根?

时间:2011-12-01 20:30:08

标签: apache relative-path

如果我在localhost中有两个文件夹:

  • 本地主机\网站\狗
  • 本地主机\网站\猫

如何让每个文件夹中的文件中的所有相对网址都使用相应的文件夹作为根?如果可能,是否有一般方法让站点文件夹中的所有文件夹自动充当其中所有相对URL的根目录?

1 个答案:

答案 0 :(得分:3)

实现所要求的最简单方法是使用HTML base tag(尽管存在一些缺点)。这允许您为站点内的所有链接指定默认URL。在以下示例中,文档的相对根是 http://www.apache.org/ ,因此将从 /images/feather-small.gif 加载< EM> http://www.apache.org/images/feather-small.gif

<html>
<head>
<title></title>
<base href="http://www.apache.org/" />
</head>
<body>
<img src="/images/feather-small.gif" />
</body>
</html>

对于您的网站,您需要每个网站包含稍微不同的基本标记,例如:

<base href="http://localhost/sites/cats/" />
<base href="http://localhost/sites/dogs/" />

我想如果你有很多网站,这可能会非常繁琐(特别是如果你想交换网站的话)。一种选择是在一个地方为每个站点配置基本标记,然后使用诸如服务器端包含(mod_include)之类的内容来合并它。假设您的站点是Apache上托管的静态内容,您可以使用mod_include来提供动态基本标记包含。或者,如果您的站点使用PHP,ASP,JSP(或类似)动态编写脚本,则可以使用这些技术获取或生成基本标记。

如果您创建了包含以下内容的 basetag.txt

<base href="http://localhost/sites/cats/" />

您可以在静态内容中引用此内容,例如 index.html 可能包含:

<!--#include virtual="./basetag.txt" -->

然后,如果您需要移动网站说“ felines ”,您只需要编辑一个文件 basetag.txt

我希望这会有所帮助。