web-dev-qa-db-ja.com

httpとhttpsの両方で動作する仮想ホストを作成するにはどうすればよいですか?

私の設定は:

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バージョンは正しく機能しています。 v_hosts、http(80)、https(443)の両方を使用して、httpをmod_rewrite経由でhttps URLに書き換えたいです。

uname -a
Linux 3.4.62-53.42.amzn1.x86_64 GNU/Linux

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

私が間違っていることを理解するのを助けてください。

13
Clyde

だから、私の設定は今です:

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]
10
Clyde