我尝试搜索此方案,但似乎找不到确切的设置。我想要类似以下内容的内容:
我想让两个子域名重定向到具有不同文档根目录的不同 https 站点。我们拥有的 SSL 证书是域级 (*example.com)。以下方法似乎不起作用,因为当我为每个端口设置多个虚拟主机时,我收到“此网页不可用”的消息。有什么建议吗?
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName subdomain1.example.com
RedirectPermanent / https://subdomain1.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.example.com
RedirectPermanent / https://subdomain2.example.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd1/
ServerName subdomain1.example.com
# more directives
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd2/
ServerName subdomain2.example.com
# more directives
</VirtualHost>
我们有将 subdomain1.example.com 和 subdomain2.example.com 都指向我们的服务器 IP 地址的 DNS。
编辑:修复了示例配置中的错误(没有 ServerName 指令)并添加了有关我们的 DNS 的信息。
答案1
您的配置示例应该可以工作(假设您已经正确设置了与这些虚拟主机相对应的 DNS 条目以解析到有问题的服务器),但您似乎没有包含ServerName
指令 - 请尝试以下操作(假设这不仅仅是示例配置构造中的错误):
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName subdomain1.example.com
RedirectPermanent / https://subdomain1.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName subdomain2.example.com
RedirectPermanent / https://subdomain2.example.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd1/
ServerName subdomain1.example.com
# more directives
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /srv/www/subd2/
ServerName subdomain2.example.com
# more directives
</VirtualHost>