Apache VirtualHost,多个站点。 1与redirectssl和1普通http

我有一个服务器与一个网站,我redirect到https通过

 <VirtualHost *:80>
      DocumentRoot / var / www / html / secure
      ServerName secure.com
     redirect/ https://secure.com
 </虚拟主机>

这没有问题。

现在我试图添加另一个不安全的网站

 <VirtualHost *:80>
     DocumentRoot / var / www / html / notsecure
     ServerName notsecure.com
 </虚拟主机>

当然,因为redirect是“/”的,所有网站都会被扣留。 我试过改变redirect到完整的文档根目录,但没有运气。

如果您启用了NameVirtualHost,则必须使用IP。 如果您正在运行SSL,或者在不同的IP地址上运行VirtualHost,则需要NameVirtualHost。

 <VirtualHost 172.16.4.1:80> DocumentRoot /var/www/html/secure ServerName secure.com Redirect / https://secure.com </VirtualHost> <VirtualHost 17.16.4.1:80> DocumentRoot /var/www/html/notsecure ServerName notsecure.com </VirtualHost> 

那么你需要声明这个(最好在httpd.conf / apache2.conf中),这很重要! 不要使用星号“*”

 NameVirtualHost IP_or_hostname:80 NameVirtualHost IP_or_hostname:443 

而在你的虚拟主机中:

 <VirtualHost IP_or_hostname:443> ServerName whateveryouwant DocumentRoot /www/blahblah/ SSLEngine on SSLCertificateKeyFile /etc/apache2/ssl/blahblah.key SSLCertificateFile /etc/apache2/ssl/blahblah.crt SSLProtocol all SSLCipherSuite HIGH:MEDIUM ErrorLog /var/log/apache2/error.log </VirtualHost> <VirtualHost IP_or_hostname:80> ServerName whateveryouwant DocumentRoot /www/blahblah ErrorLog /var/log/apache2/error.log LogLevel warn ServerSignature Off RewriteEngine on RewriteCond %{HTTP_HOST} ^blahblahblah$ [NC] RewriteRule ^/(.*) https://blahblahblah/$1 [R=301,L] </VirtualHost> 

尝试以下configuration:

 NameVirtualHost *:80 NameVirtualHost *:443 # default virtual host <VirtualHost *:80> ServerName _default_ DocumentRoot /var/www/html/default </VirtualHost> <VirtualHost *:80> ServerName secure.com DocumentRoot /var/www/html/secure RedirectPermanent / https://secure.com </VirtualHost> <VirtualHost *:443> ServerName secure.com DocumentRoot /var/www/html/secure SSLEngine on # other SSL related directives </VirtualHost> <VirtualHost *:80> ServerName notsecure.com DocumentRoot /var/www/html/notsecure </VirtualHost> 

您还应该查看Apache httpd文档中的VirtualHost示例 。

使用mod_rewrite:

你的conf应该是这样的:

  <VirtualHost *:80> DocumentRoot /var/www/html/secure ServerName secure.com RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}` </VirtualHost>