如何使用Apache Alias Directive而不是符号链接在Multisite模式下设置Drupal?

时间:2011-09-14 16:36:57

标签: php apache drupal drupal-6

我已成功按照Drupal的install.txt中的指南和一些stackoverflow帖子在与我的原始(默认)Drupal站点相同的主机上的另一个子文件夹中创建一个新站点,部分是使用/ bar / to /中的符号链接富/。

Original site 
example.com/foo/

Additional Drupal Site
example.com/bar/

这很有效。我面临的问题是我们宁愿不使用符号链接来提供重定向,因为服务器会造成额外的压力。在Apache中使用Alias指令可以完成同样的事情吗?

到目前为止,我们设置了一个Alias指令,用于发送/ bar / to / foo /的所有请求。这会将人们发送到原始站点/ foo /,而不是新站点/ bar /。否则,URL正确写入。是否需要采取一些额外步骤才能使此方法有效?

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以为两个不同的站点使用一个Drupal安装,以避免在文件系统上使用两次源代码。

符号链接似乎是一个很好的解决方案。你为什么不能用它?我真的不明白你的意思是“额外的压力”。

我一直认为Drupal多站点系统基于服务器名称($_SERVER['HTTP_HOST']),以便在您的站点/文件夹中正确切换。但由于您的两个站点都在相同的域(和子域)下运行,Drupal将加载相同的settings.php文件。

一种解决方案是在settings.php文件中添加一些逻辑。您可以检查$_SERVER["REQUEST_URI"]并查看是否以/ foo /或/ bar /开头。然后,您可以在2个数据库之间切换(每个目录一个)。在这个switch或if语句中,你还必须设置你的$ base_url变量,以便让Drupal正确生成链接。

对于上传的文件,您还必须分开。您可以创建以下内容:

  • 位点/富/文件
  • 位点/酒吧/文件

在每个数据库中,您将能够设置文件系统目录(Drupal的管理页面将位于admin / settings / file-system下)。

希望这对你有所帮助。

PS:我还想到了一个Apache RewriteRule而不是重定向,但它不起作用,因为Drupal只会生成指向目标目录的链接,因此用户将通过点击他们在生成的第一个链接上重定向页面: - (

答案 1 :(得分:0)

好消息,现在一切正常!我们的测试服务器有一些奇怪的DNS设置,它干扰了重定向规则。 Symlinks和Apache Redirect Directives都没有正确地将数据传递给Drupal。

当我们移动到另一个没有额外DNS重定向的虚拟主机时,一切正常,Drupal无论我们使用的是Symlnks还是Apache Directives都在工作。