过去,我们在 Apache 中使用过基于名称的虚拟主机。我们最近将网站转换为 SSL,并且必须采用基于 IP 的路由。因此,我们目前有一个设置如下的实例:
- www.domain.com 使用端口 80
- dev.domain.com 使用端口 8080
两者都使用相同的 IP。使用 Drupal 多站点功能可以实现这种情况吗?虽然我们发现 dev.domain.com 可以工作并读取正确的“dev”数据库(使用 dev 设置),但它却从“www”站点读取主题文件,这不是我们想要的。
罪魁祸首是开发人员的 htaccess 文件吗?Apache 正在监听 8080 并且确实使用了正确的 DB 设置,但只是使用了不正确的主题文件。还有一点需要注意:浏览 dev.domain.com:8080 会出现错误:“页面重定向不正确”。我们是否应该为开发人员网站购买一个新的 IP 地址,还是这仍然无济于事?
任何建议都值得感激。谢谢。
答案1
您是否尝试过使用 ServerName 指令为每个 VirtualHost 节指定一个端口?
答案2
如果您愿意付费,可能会有更好的解决方案。为 *.domain.com 购买通配符证书
我认为一年的价格在 150-200 左右。这将解决您的问题。
如果你不想这样做,你可以编辑你的 htaccess,让它更通用地处理端口
答案3
事实证明,dev.domain.com 始终只查看 www.domain.com,并从那里读取正确的 DB 配置文件,而不是 dev.domain.com。这最终是 .conf 文件顺序的问题,其中读取的是 dev.domain.com后由于 .conf 命名方案,www.domain.com。我将 domain1-dev.conf 重命名为 dev-domain1.com,现在一切正常,因为 dev.domain.com 先于 www.domain.com 被读取,这就像一个包罗万象的东西。
这与端口或 Apache VirtualHost 设置之外的任何内容无关。以下是我用来帮助确定读取顺序的方法:
$PATH_TO_APACHE_DIR/bin/httpd -S