web-dev-qa-db-ja.com

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

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

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

正確な構成を作業サイトから新しいVirtualHostおよび.htaccessファイルにコピーしたので、なぜ新しいサイトで機能しないのかわかりません。両方のサイトの私のDNSレコードはすべて、それを指すためにAレコードを使用しており、リダイレクトなどはDNSレベルでは発生しません。以下のコードのRedirect行の最後に/を配置しようとしましたが、問題は解決しませんでした。サーバーはUbuntu14.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>
3
vaindil

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証明書を作成する必要があります...しかし、これには すばらしいチュートリアル があります!

4
Ricain