2016-08-03 15 views
1

httpをhttpsにリダイレクトしようとしています。 私は多くの答えを見つけましたが、何も私のために働きません。 私はなぜ、おそらくそのapache2設定のエラーを知りませんか? .htaccessでも試してみて、何も起こりません。HTTPをHTTPSにリダイレクトするApache2

ただ、このエラー:

Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please.

ここに私の仮想ホストのファイルがあります。使用

#Redirect HTTP TO HTTPS 

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/%$1 [R,L] 

#VHOSTS 


<VirtualHost *:443> 
    Servername www.latoya.eu 
    ServerAlias latoya.eu www.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:443> 
    Servername board.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:443 *:80> 
    Servername secure.latoya.eu 
    Documentroot /var/www/latoya 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLEngine on 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 

<VirtualHost *:80 *:443> 
    Servername static.kritzelpixel.com 
    Documentroot /var/www/static.kritzelpixel.com 
    ErrorLog /path/to/log/error.log 
    CustomLog /path/to/log/access.log combined 
    SSLCertificateFile /path/to/ssl/files/pem.crt 
    SSLCertificateKeyFile /path/to/ssl/files/private.key 
    SSLCertificateChainFile /path/to/ssl/files/pem.ca-bundle 
</VirtualHost> 
+0

ポート80に「SSLEngine off」を、ポート443に「SSLEngine on」 – Owen

+0

を設定する必要があります。解決済みの問題 – xMizo

答えて

1

「のVirtualHost *:443:* 80」または1つのVirtualHostはSSLではないと同時にSSLすることはできませんので、同じのVirtualHostタグで反対が完全に間違っています。

Apache HTTPDが苦痛を感じていないという事実は、同じ仮想ホスト内の異なるポートを「使用できる」が、SSLポートと非SSLポートを一緒に持つようには設計されていないからです。

私は、あなたの設定を正しいものにすること、すなわち特定の仮想ホスト*:80とvirtualhost *:443を別々にすることをお勧めします。

VirtualHost *:80エントリでは、/ https://example.com/を特定のホスト名でリダイレクトすると、mod_rewriteを使用せずに、1行で80から443にリダイレクトできます。

SSLにリダイレクトするmod_rewriteは不要であり、過度に使用する必要はありません。

簡単に言えば:

<VirtualHost *:80> 
ServerName example.com 
Redirect/https://example.com/ 
</VirtualHost> 
<VirtualHost *:443> 
ServerName example.com 
SSLEngine on 
#other directives here 
</VirtualHost> 

そして、彼らは異なる構成を持っている場合、名前の残りの部分と同じ。

+0

*:80と*:443は、SSLまたは非SSLのどちらでも構いませんが、規約80ではSSL以外のものが想定されています。 – Owen

+0

シンタックスを使用すると、コヒーレンスシェイクに使用すべきでない完全な収差であることを防ぐことはできません。 最後に、1つの仮想ホストはSSLまたはSSLではなく両方ではありません。 –

関連する問題