文中の表記について
リンクになってしまうのを防ぐため、URLのプロトコル部分(http(s)
)の先頭の"h"は全角"H"に置き換えています。
やりたいこと
久しぶりに設定して頭がこんがらがったのでメモ
やりたいことは、あるサイトへのアクセスをURLを書き換えて(Rewrite)して、リダイレクトして以下に限定すること。
(個別の記載はあるけどまとまったのがない)
- HTTPS限定
- WWWなし
ドメインをyourdomain.jp
とした場合、以下のようにしたい。
元のURL | リダイレクト後 |
---|---|
Http://www.youdomain.jp | Https://youdomain.jp |
Https://www.youdomain.jp | Https://youdomain.jp |
Http://youdomain.jp | Https://youdomain.jp |
Https://youdomain.jp | Https://youdomain.jp リダイレクトなし |
設定
apache2.4
のhttpd.conf
での記述です。
ポイントは、★で囲んだhttps + wwwあり(https://www.yourdomain.jp)
のアクセス。
ここで、この元URLに対応したSSL証明書を設定する必要があります。(wwwありとwwwなしはそれぞれ異なる証明書が必要であるため)
SSL証明書設定がなくても、リダイレクト先のSSL証明書を指定してもブラウザが警告発出してしまいます。
httpd.conf
<VirtualHost *:443>
ServerName yourdomain.jp
SSLEngine on
SSL設定(ファイル参照)を記述
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourdomain.jp
RewriteEngine on
RewriteRule .* Https://yourdomain.jp%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.yourdomain.jp
RewriteEngine on
RewriteRule .* Https://yourdomain.jp%{REQUEST_URI} [R=301,L]
★SSLEngine on★
★SSL設定(ファイル参照)を記述★
</VirtualHost>
<VirtualHost *:80>
ServerName yourdomain.jp
RewriteEngine On
RewriteRule .* Https://yourdomain.jp%{REQUEST_URI} [R=301,L]
</VirtualHost>