我有一个服务器与一个网站,我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>