在Apache中使用SSL将一个虚拟主机redirect到另一个虚拟主机

这里是我的情况:我有两个CNAME域( domain.one.comdomain.two.com )指向相同的IP /机器,我想redirect到另一个,如domain.one.com/anythingdomain.two.com/anythingdomain.two.com有一个有效的SSL证书。

我有以下设置:

httpd.conf

 RewriteCond %{HTTP_HOST} ^domain\.two\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) https://domain.two.com/$1 [L,R] NameVirtualHost *:80 NameVirtualHost domain.two.com:443 <VirtualHost *:80> ServerName domain.two.com DocumentRoot "/var/www/html/" ErrorLog logs/error_log CustomLog logs/access_log common RewriteEngine On RewriteOptions Inherit </VirtualHost> 

ssl.conf

 <VirtualHost domain.two.com:443> DocumentRoot "/var/www/html" ServerName domain.two.com:443 </VirtualHost> 

我到目前为止所尝试的:

添加到httpd.conf中:

 NameVirtualHost domain.one.com:443 <VirtualHost domain.one.com:80> ServerName domain.one.com RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.one.com$ RewriteRule (.*) http://domain.two.com/$1 [R=Permanent] </VirtualHost> 
  • 不redirect。

还要将以下内容添加到ssl.conf

 <VirtualHost domain.one.com:443> ServerName domain.one.com RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.one.com$ RewriteRule (.*) http://domain.two.com/$1 [R=Permanent] </VirtualHost> 
  • 服务器停止工作。

我知道我做错了什么,但我不知道是什么。 我怎样才能做这个工作?

(我应该提到,我是这些东西的小菜一碟。)

我build议你在DNS设置中使用CNAMElogging来简化程序。 请参阅A,CNAME,ALIAS和URLlogging之间的差异

以下vhostconfiguration将满足您的要求。

1) HTTP domain.one.com到HTTPS domain.two.com

 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName domain.one.com RewriteEngine On RewriteRule ^(.*)$ "https://domain.two.com$1" [R,L] ErrorLog logs/error_log CustomLog logs/access_log common DocumentRoot "/var/www/html/" <Directory "/var/www/html/"> Require all granted Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName domain.two.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/your.crt SSLCertificateKeyFile /etc/apache2/ssl/your.key SSLCertificateChainFile /etc/apache2/ssl/chain.crt ErrorLog logs/error_log CustomLog logs/access_log common DocumentRoot "/var/www/html/" <Directory "/var/www/html/"> Require all granted Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

2)对于HTTPHTTPS domain.one.com到HTTPS domain.two.com

 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName domain.one.com RewriteEngine On RewriteRule ^(.*)$ "https://domain.two.com$1" [R,L] ErrorLog logs/error_log CustomLog logs/access_log common DocumentRoot "/var/www/html/" <Directory "/var/www/html/"> Require all granted Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName domain.one.com RewriteEngine On RewriteRule ^(.*)$ "https://domain.two.com$1" [R,L] SSLEngine On SSLCertificateFile /etc/apache2/ssl/your.crt SSLCertificateKeyFile /etc/apache2/ssl/your.key SSLCertificateChainFile /etc/apache2/ssl/chain.crt ErrorLog logs/error_log CustomLog logs/access_log common DocumentRoot "/var/www/html/" <Directory "/var/www/html/"> Require all granted Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName domain.two.com SSLEngine On SSLCertificateFile /etc/apache2/ssl/your.crt SSLCertificateKeyFile /etc/apache2/ssl/your.key SSLCertificateChainFile /etc/apache2/ssl/chain.crt ErrorLog logs/error_log CustomLog logs/access_log common DocumentRoot "/var/www/html/" <Directory "/var/www/html/"> Require all granted Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>