我正在尝试设置 Apache 以使用 VirtualDocumentRoot 指令,但我的站点并不完全相同。大多数站点都有一个 drupal 文件夹,该文件夹应为根目录,但也有一些非常老的 drupal 站点、一些 rails 站点、一些 django 站点等,它们希望将文档根目录设为 / 或其他文件夹。
有没有办法根据条件设置 VirtualDocumentRoot,或者有没有办法使用 RewriteRule/Cond 来检测 / 如果存在 drupal 文件夹或公共文件夹则是否是错误的文件夹?
以下是我目前所掌握的信息:
<VirtualHost *:80>
# Wildcard ServerAlias, this is the default vhost if no specific vhost matches first.
ServerAlias *.unicorn.devserver.com
# Automatic ServerName, based on the HTTP_HOST header.
UseCanonicalName Off
# Automatic DocumentRoot. This uses the 4th level domain name as the document root,
# for example http://bar.foo.baz.com/ would respond with /Users/vosechu/Sites/bar/drupal.
VirtualDocumentRoot /Users/vosechu/Sites/%-4/drupal
</VirtualHost>
提前致谢!
-查克
答案1
Is there a way to set up VirtualDocumentRoot based on a conditional
?
不-- 这根本不是VirtualDocumentRoot
工作原理 -- 它会挑选主机名的一部分并将其粘贴到路径中。
or is there a way to use RewriteRule/Cond to detect that '/' is the incorrect folder if there is a drupal folder or a public folder?
我不能 100% 确定你在这里问的是什么,但它听起来像是“有没有办法让 Apache 根据目录的内容做出不同的行为?” - 如果有,答案几乎是“否”:
Apache 只是提供它所给出的内容。它不知道如何“知道”目录是否是 Drupal 站点(它只是看到一个 PHP 文件,并启动一个 PHP 解释器,因为这是它被告知要对 PHP 文件执行的操作,并输出解释器返回的结果)。
您似乎试图将截然不同的站点的方形钉子塞进圆孔中VirtualDocumentRoot
(这最适合死的简单站点) - 对于您来说,我认为您确实需要为每个站点创建单独的虚拟主机并分别管理它们的配置。