我同服务器有 3 个域名, 3 个网站: A 、 B 、 C 配置 SSL 之后,第二个域名的 SSL 跳转老是跳转到第一个网站去。
假如: 在配置文件中,上下顺序为: A-B-C 那么 A 和 C 网站的 SSL 都正常,但是 B 不正常,访问 B 网站就说配置错误,显示了 A 网站的证书文件,就会跳转到 A 网站去。
如果我把域名配置文件换个位置,还是这样。换成: A-C-B , 那么 A 和 B 网站又正常,但是 C 网又的 SSL 证书也显示 A 域名的了。 我在.htaccess 301 强制跳转到 https 也一样,反正谁在中间,谁就错误。 开始以为配置文件的路径用了 A 网站的,但是怎么看都是没有错的。
在 httpd.conf 的大概配置是: <VirtualHost *:80> DocumentRoot /www/A ServerName A 域名 <Directory "/www/A"> </Directory> </VirtualHost> <VirtualHost *:443> DocumentRoot /www/A SSLEngine on 证书路径 </VirtualHost> -------------------------- <VirtualHost *:80> DocumentRoot /www/B ServerName B 域名 <Directory "/www/B"> </Directory> </VirtualHost> <VirtualHost *:443> DocumentRoot /www/B SSLEngine on 证书路径 </VirtualHost> --------------------------- <VirtualHost *:80> DocumentRoot /www/C ServerName C 域名 <Directory "/www/C"> </Directory> </VirtualHost> <VirtualHost *:443> DocumentRoot /www/C SSLEngine on 证书路径 </VirtualHost> ------------------------- 在.htaccess 做过 301 跳转是: RewriteEngine On RewriteCond %{HTTPS} !^on$ [NC] RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] ------------------------------------------ 和这种(不过这样配置网站直接不能访问了) RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 这种是看的通天塔家的方法, SSL 他家买的。。。