Как создать виртуальный хост, который работает как с HTTP, так и с HTTPS?

StackOverflow https://stackoverflow.com/questions/19852817

Вопрос

Моя конфигурация:

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 работает правильно. Я хочу использовать как Vhosts, HTTP (80) и HTTPS (443), чтобы переписать HTTP в URL HTTPS через MOD_REWRITE.

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 в HTTPS в файле HTTP Vhost .htaccess:

#Redirrect from http to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top