我在Windows Server 2008 R2和PHP 5.6.18上运行Apache 2.4.18。
我的Apache服务器默认情况下已打开SSL 。 我需要运行2个不同的站点,其中一个站点使用SSL ,另一个站点不使用SSL 。
这里是我已经添加到我的httpd-vhosts.conf文件,试图让它工作
<VirtualHost *:80> ServerName SERVER1.example.com Redirect permanent "C:/phpsites/app1" https://sub1.example.com/ </VirtualHost> <VirtualHost *:80> DocumentRoot "C:/phpsites/app2/public" ServerName SERVER1.example.com ServerAlias sub2.example.com SSLEngine Off <Directory "C:/phpsites/app2/public"> AllowOverride All Require all Granted </Directory> </VirtualHost> <VirtualHost *:443> DocumentRoot "C:/phpsites/app1" ServerName SERVER1.example.com ServerAlias sub1.example.com SSLEngine On SSLCertificateFile "c:/Apache24/conf/certificate/cert.crt" SSLCertificateKeyFile "c:/Apache24/conf/certificate/private.key" <Directory "C:/phpsites/app1"> AllowOverride All Require all Granted </Directory> </VirtualHost>
上述设置无法正常工作。 当我去**https**://sub1.example.com Apache将我redirect到正确的站点C:/phpsites/app1 。 当我去**http**://sub1.example.com它会将我redirect到C:/phpsites/app2/public但我不希望发生这种情况。 而当我去http://sub2.example.com时,出于某种原因,我被redirect到**https**://sub1.example.com 。
我需要将正在查找http://sub1.example.com或https://sub1.example.com任何用户指向**https**://sub1.example.com 。
而任何正在查找http://sub2.example.com或https://sub2.example.com用户都可以访问**http**://sub2.example.com
我怎样才能使这个工作?
更新
这是我执行httpd -D DUMP_VHOSTS时所得到的httpd -D DUMP_VHOSTS
VirtualHostconfiguration:
*:80 is a NameVirtualHost default server SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:27) port 80 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:27) port 80 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:34) alias sub2.example.com *:443 is a NameVirtualHost default server SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52) port 443 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:52) alias sub1.example.com port 443 namevhost SERVER1.example.com (C:/Apache24/conf/extra/httpd-ssl.conf:85)
当我转到http://sub1.example.com时,它将我redirect到C:/ phpsites / app2 / public,但我不希望发生这种情况。
这是因为您只有一个(默认)http虚拟主机
<VirtualHost *:80> DocumentRoot "C:/phpsites/app2/public" ServerAdmin [email protected] ServerName sub2.example.com ServerAlias sub2.example.com SSLEngine Off <Directory "C:/phpsites/app2/public"> AllowOverride All Require all Granted </Directory> </VirtualHost>
您必须为sub1.example.com添加虚拟主机
<VirtualHost *:80> ServerName sub1.example.com Redirect 301 / https://sub1.example.com/ </VirtualHost>
下面这行真的很奇怪
port 80 namevhost sub1.example.com (C:/Apache24/conf/extra/httpd-vhosts.conf:43) alias sub2.example.com
你为什么在sub1虚拟主机中使用sub2作为别名?