回答:
私は実際にこの例に従って、それは私のために働いた:)
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent / https://mysite.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
次に行います:
/etc/init.d/httpd restart
/etc/init.d/httpd reload
|| service httpd reload
DocumentRoot /usr/local/apache2/htdocs
は不要になりました
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
http://www.sslshopper.com/apache-redirect-http-to-https.html
または
http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html
apache redirect http to https
ここを探して着陸しました。これは私がubuntuでやったことです:
sudo a2enmod rewrite
sudo a2enmod ssl
ファイルを編集
/etc/apache2/sites-available/000-default.conf
コンテンツは:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile <path to your crt file>
SSLCertificateKeyFile <path to your private key file>
# Rest of your site config
# ...
</VirtualHost>
sudo service apache2 restart
実際、あなたのトピックはhttps://serverfault.com/に属していますが、これらの.htaccessディレクティブを確認することもできます。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
mod_rewriteの使用は、代わりに仮想ホストとリダイレクトを使用することをお勧めしません。
mod_rewriteを使用する傾向がある場合:
RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same
location but using HTTPS.
# i.e. http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context
リファレンス:Httpd Wiki-RewriteHTTPToHTTPS
301永久リダイレクトを探している場合、リダイレクトフラグは次のようになります。
R=301
RewriteRuleは次のようになります。
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
サーバーのバージョン:Apache / 2.4.29(Ubuntu)
Webとapacheの公式ドキュメントで長時間検索した後、私にとって有効な唯一の解決策は/usr/share/doc/apache2/README.Debian.gzからのものでした
To enable SSL, type (as user root):
a2ensite default-ssl
a2enmod ssl
/etc/apache2/sites-available/000-default.confファイルに、
リダイレクト"/" " https://sub.domain.com/ "
<VirtualHost *:80>
#ServerName www.example.com
DocumentRoot /var/www/owncloud
Redirect "/" "https://sub.domain.com/"
それでおしまい。
PS:解凍せずにマニュアルを読みたい場合:
gunzip -cd /usr/share/doc/apache2/README.Debian.gz
このコードは私にとってはうまくいきます。
# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
私http
は、サーバー上のデフォルトのApacheホームページからすべてのトラフィックを、サービスが提供されるものにリダイレクトするだけの簡単なものにこれを必要としましたhttps
。
私はまだかなりてるので、緑、それは、Apacheの設定に来るとき、私は使用を避けることを好むmod_rewrite
直接、代わりにこのような単純なもののために行ってきました:
<VirtualHost *:80>
<Location "/">
Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
</Location>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/html"
SSLEngine on
...
</VirtualHost>
これが好きなのは、Apache変数を使用できるため、実際のホスト名はドメイン名が関連付けられていない単なるIPアドレスなので、指定する必要がなかったからです。