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

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

仮想ホストを設定する方法は次のとおりです。

<VirtualHost mysite> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

この設定では、サイトは https でのみ表示でき、http では表示できません。SSLEngine をオフにすると、https ではサイトを表示できなくなりますが、http では正常に動作します。

http と https の両方を使用してサイトを表示できるように上記の行を調整するにはどうすればよいですか?

私は OSX Lion を使用していますが、それほど問題ではないと思います。

ありがとう。

答え1

次のように 2 つの仮想ホストを作成する必要があります。

<VirtualHost mysite:80> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
</VirtualHost>


<VirtualHost mysite:443> 
  <Directory "/Users/myusername/sitefolder"> 
    Options +FollowSymlinks
    AllowOverride All 
    Order Allow,Deny
    Allow from all
  </Directory> 
  DocumentRoot "/Users/myusername/sitefolder"
  ServerName mysite
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

1 つ目は通常のHTTPホストであり、2 つ目はHTTPSトラフィックを処理します。

答え2

Includeまた、2つの仮想ホスト間で設定を重複させないように、ディレクティブを使用することをお勧めします。詳しくは、http://httpd.apache.org/docs/2.2/mod/core.html#include を参照してください。

関連情報