我的配置是:

Listen 443 http
NameVirtualHost *:80
NameVirtualHost *:443
ServerName *:80

<VirtualHost *:80>
  [some non-ssl stuff]
  ServerName account.example.com
</VirtualHost>

<VirtualHost *:443>
  [some non-ssl stuff(directory, docroot)]
  ServerName account.example.com
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

因此,我无法访问网站的http版本,但ssl版本运行正常。我想同时使用vhost,http(80)和https(443)通过mod_rewrite将HTTP重写为https URL。
uname -a
Linux 3.4.62-53.42.amzn1.x86_64 GNU/Linux

httpd -v
Server version: Apache/2.2.25 (Unix)

请帮助了解我在做什么错。

最佳答案

因此,我的配置现在是:

Listen 443 http
Listen 80
NameVirtualHost *:80
NameVirtualHost *:443
ServerName *:80

<VirtualHost *:443>
  [some non-ssl stuff(directory, docroot)]
  ServerName account.example.com
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

<VirtualHost *:80>
  SSLEngine off
  [other stuff like docroot]
</VirtualHost>

不确定SSLEngine off,但是现在可以了。因此,我在http vhost的.htaccess文件中添加了重写规则,以从http重定向到https:
#Redirrect from http to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

09-10 05:29
查看更多