サーバーの新しいサイトに新しい仮想ホストを設定しましたが、元のサイトとまったく同じ設定をしているにもかかわらず、奇妙な動作をしています。
簡単に言えば、すべてのリクエストを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>
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証明書を作成する必要があります...しかし、これには すばらしいチュートリアル があります!