http から https への適切な Apache リダイレクト

http から https への適切な Apache リダイレクト

サーバー上の新しいサイト用に新しい仮想ホストを設定しましたが、元のサイトとまったく同じ設定であるにもかかわらず、動作がおかしくなります。

簡単に言えば、すべてのリクエストを HTTPS にリダイレクトしたいのです。メイン サイト (動作中のサイト) では、これを設定で指定しVirtualHost、 では.htaccess短縮 URL を許可する追加ルールを指定しています。具体的には、動作していないサイトでの問題は、 にアクセスしようとすると、example.com/urlリダイレクトが にアクセスし、 URL からhttps://example.comurl必要なものが削除されることです。/

VirtualHost動作中のサイトから新しいファイルに正確な設定をコピーしたので.htaccess、新しいサイトで動作しない理由がよくわかりません。両方のサイトの DNS レコードはすべて A レコードを使用してポイントしており、DNS レベルでリダイレクトや何かは発生していません。以下のコードの/行末にを入れてみましたRedirectが、問題は解決しませんでした。サーバーは Ubuntu 14.04 で、Apache はバージョン 2.4.7 です。両方のサイトは別々のドメイン名で別々の.confファイルを使用していますが、同じ IP アドレスを持つ同じサーバー上でホストされています。この問題を修正するにはどうすればよいですか?

関連するコードVirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

そして.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

役に立つ/重要な場合に備えて、これは私の VirtualHost ファイル内の SSL 構成ですが、他のすべてのディレクティブの外側のファイルの先頭に配置されています。

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

VirtualHostこれは、サイト専用の設定です。

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>

答え1

HTTPS にリダイレクトするには:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

ただし、SSL 用の仮想ホストが必要です。

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

注記:SSL証明書を作成する必要がありますが、素晴らしいチュートリアルこのために!

関連情報