我如何设置Drupal在多站点模式使用Apache别名指令而不是符号链接


How do I set up Drupal in Multisite mode using Apache Alias Directive instead of symlinks?

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

Original site 
example.com/foo/
Additional Drupal Site
example.com/bar/

这个工作得很好。我所面临的问题是,我们宁愿不使用符号链接来提供重定向,由于对服务器造成的额外压力。是否有可能在Apache中使用Alias指令来完成同样的事情?

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

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

符号链接似乎是一个很好的解决方案。你为什么不能用它?我不太明白你说的"额外应变"是什么意思。

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

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

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

    <
  • 网站/foo/文件/gh><
  • 网站/酒吧/文件/gh>

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

希望这对你有帮助。

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

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

当我们移动到另一个虚拟主机,没有额外的DNS重定向一切工作正常,Drupal工作,无论我们使用symlinks或Apache指令