我有很多旧的地址和服务器, https : //site1.example.com,https://foo.example.com等等。 我想停止有这么多的服务器和SSL证书,并将所有内容都移动到一个服务器和域。 旧的链接需要保持有效。
到目前为止,我已经将Web应用程序移动到一个新的服务器, https : //apps.example.com/name,https://apps.example.com/foo等等。
我想closures具有Apache(2.2)redirect的旧服务器:
NameVirtualHost 123.123.123.123:80 NameVirtualHost 123.123.123.123:443 <VirtualHost 123.123.123.123:80> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> <VirtualHost 123.123.123.123:443> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> <VirtualHost 123.123.123.123:80> Servername site2.example.com redirect permanent / https://apps.example.com/site2 </VirtualHost> ...
上述的工作,但这意味着我需要保持这个旧的硬件服务器打开。
作为一个testing,我已经把site1.example.com指向了apps.example.com(新的服务器)的IP地址,并且在Apache(2.4)conf中,我有:
NameVirtualHost 234.234.234.234:80 NameVirtualHost 234.234.234.234:443 <VirtualHost 234.234.234.234:80> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> <VirtualHost 234.234.234.234:443> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> # Main config <VirtualHost *:80> Servername apps.example.com redirect permanent / https://apps.example.com/name </VirtualHost> <VirtualHost *:443> Servername apps.example.com alias /site1 /srv/www/site1 alias /site2 /srv/www/site2 ... </VirtualHost>
http://site1.example.com只是转到根https://apps.example.com而不是apps.example.com/site1。 https://site1.example.com提供了一个错误,SSL无效,主机名apps.example.com不匹配等任何帮助非常感谢。
这是一个猜测,但我会build议不要混合使用IP地址和星号的NameVirtualHost指令。 我的build议是尝试将所有内容转换为星号,并使用ServerName和ServerAlias指令来确定客户端请求的是哪个传统域,并据此实现适当的redirect…换句话说:
NameVirtualHost *:80 NameVirtualHost *:443 ... <VirtualHost *:80> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> <VirtualHost *:443> Servername site1.example.com redirect permanent / https://apps.example.com/site1 </VirtualHost> <VirtualHost *:80> Servername site2.example.com redirect permanent / https://apps.example.com/site2 </VirtualHost> <VirtualHost *:443> Servername site2.example.com redirect permanent / https://apps.example.com/site2 </VirtualHost> ... # Main config <VirtualHost *:80> Servername apps.example.com redirect permanent / https://apps.example.com/name </VirtualHost> <VirtualHost *:443> Servername apps.example.com alias /site1 /srv/www/site1 alias /site2 /srv/www/site2 ... </VirtualHost>
以上忽略SSL证书configuration。 假设你所有的域名是example.com(即相同的域名),那么投资通配符SSL证书以保持简单是有益的。