mod_rewrite 不适用于 Apache2 中的子域名

mod_rewrite 不适用于 Apache2 中的子域名

我在使用 mod_rewrite 时遇到了一些问题。因此,我通过 .htaccess 来实现它,我可以让它在我的主虚拟主机 domain.com 上运行 - 我想要它执行的是重写http://domain.com以强制执行https://domain.com,它做得很好。我希望为一个 IP 设置基于名称的虚拟主机,并进行以下重定向:

http://domain.com --> https://domain.com
http://staging.domain.com --> https://staging.domain.com
http://test.domain.com --> https://test.domain.com
http://beta.domain.com --> https://beta.domain.com

domain.com重定向到https://domain.com,但 staging.domain.com 不会,尽管我可以访问https://staging.domain.com。两者的 .htaccess 相同,只是域名不同。它似乎根本没有对 staging.domain.com 进行任何重写,我已通过尝试将其重写为 www.google.com 对此进行了测试。

我有一个通配符 DNS 记录,*.domain.com,它指向域 IP。

是否有特定方法可以配置虚拟主机以允许这样做?

我一直在 Apache 文档中读到它不支持多个基于 SSL 名称的虚拟主机。但我可以访问两者,https://domain.com而且https://staging.domain.com一切正常。

有什么想法吗?感谢大家的帮助。

答案1

您有“NameVirtualHost”指令吗?您是否在 vhost 配置中使用了它们?

此外请看一下这个:http://wiki.apache.org/httpd/NameBasedSSLVHosts

如果两个 SSL 域都在同一个 IP 上运行,则只会使用一种加密(证书),并且“客户端将收到证书不匹配警告,并容易受到中间人攻击”。

答案2

RewriteEngine 既可以全局启用,也可以在每个虚拟主机上启用。即使全局启用,默认情况下选项也不会带入虚拟主机。您可能只需要在当前虚拟主机中将其重新打开。 RewriteEngine on(也可能RewriteOptions inherit,取决于您的配置)在每个虚拟主机中。

相关内容