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

Apache 如何将不同文件的相对URL映射到不同的根?,apache,relative-path,Apache,Relative Path,如果我在localhost中有两个文件夹: localhost\sites\dog localhost\sites\cat 如何使每个文件夹中的文件中的所有相对URL使用相应的文件夹作为根目录?如果可能的话,是否有一种通用方法可以让sites文件夹中的所有文件夹自动作为其中所有相对URL的根目录?实现您的要求的最简单方法是使用(尽管有一些缺点)。这允许您为站点内的所有链接指定默认URL。在下面的示例中,文档的相对根是http://www.apache.org/ 因此/images/feath

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

  • localhost\sites\dog
  • localhost\sites\cat

如何使每个文件夹中的文件中的所有相对URL使用相应的文件夹作为根目录?如果可能的话,是否有一种通用方法可以让sites文件夹中的所有文件夹自动作为其中所有相对URL的根目录?

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


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

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

我可以想象,如果你有很多网站,这可能会变得相当乏味(特别是如果你想交换网站的话)。一个选项是在一个地方为每个站点配置基本标记,然后使用类似服务器端包含(mod_include)的东西将其合并。假设您的站点是Apache上托管的静态内容,您可以使用mod_include来提供动态基本标记include。或者,如果您的站点使用PHP、ASP、JSP(或类似)动态编写脚本,您可以使用这些技术获取或生成基本标记

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

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

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

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

然后,如果您需要将站点移动到“猫”的位置,则只需编辑一个文件basetag.txt


我希望这能有所帮助。

您似乎对您的Web服务器知道和关心的内容与客户知道和关心的内容感到困惑。还不清楚您的相关URL和超链接是什么样子的——例如,是否有一个带有“bar.html”链接的sites/dog/cat/foo,以及您希望它去哪里?可能不是foo/bar.html,因为这不需要配置/特殊情况。谢谢马克!根据评论,我想我可能对这个问题的措辞很糟糕。但这个答案正是我想要的。
<!--#include virtual="./basetag.txt" -->