Edited at

【Apache】HTTP/HTTPS共存 リダイレクト設定 Rewrite【SSL設定】

More than 3 years have passed since last update.

【個人メモ】

Apacheの設定でSSLと通常の通信を行う際の共存設定方法

バーチャルホストの設定にて実施

Listenは80しか開けてない

NameVirtualHost *:443書いてから起動時にWarnを見るように⇒不要かも?


基本構文


httpd.conf


<VirtualHost *:80>
ServerName HTTP通信時のてすとサーバの名前(サイトURL)
DocumentRoot /var/www/html/ほげほげ
<Directory "/var/www/html/ほげほげ/">
AllowOverride
RewriteEngine

</Directory>
</VirtualHost>

<VirtualHost *:443>
ServerName HTTPS通信時のてすとサーバの名前(サイトURL)
DocumentRoot /var/www/html/ほげほげ
Redirect

<Directory "/var/www/html/ほげほげ/">
AllowOverride
RewriteEngine

</Directory>
RewriteEngine
SSLEngine on
SSLCertificateFile /etc/ssl/hoge.cer
SSLCertificateKeyFile /etc/ssl/hoge.key
SSLCertificateChainFile /etc/ssl/hoge-hoge.cer
</VirtualHost>


複数ドメイン運用の際は上記セットをドメイン数分書いてしまえばドメイン数分HTTP/HTTPSの設定が可能


.htaccess

.htaccessを利用する場合、上記ディレクトリタブ内の『AllowOverride』を AllowOverride All とする。

この記述が無いと.htaccessが効かなくなる。

聞かせたいディレクトリ階層の一番上で1回この記述を書いておけば、その下の階層の.htaccessは効く



リダイレクト

URLの書き換え<Rewrite>を行う場合このタブ内に記述(物によってはヴァーチャルホストタブの中で無いと効かなかったので両方試す)

リダイレクトはそのドキュメントルートからみて、どこにアクセスが有った場合どこに飛ばすと言った形で書く

Rewriteサンプル


サンプル

RewriteRule .* https://www.google.co.jp/ (⇒そのディレクトリに来たやつを全部飛ばす)

RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] (⇒HTTPをHTTPSに強制リダイレクト)

後ろの[R,L]とか結構重要

Redirectサンプル


サンプル

Redirect /sub_dir1 http://qiita.com/Yuki_BB3/stock

Redirect /sub_dir1/index.html http://qiita.com/Yuki_BB3/stock
Redirect /sub1(.*) http://qiita.com/Yuki_BB3/stock



SSL証明書設定

バーチャルホストタブ内

        SSLEngine on

SSLCertificateFile /etc/ssl/hoge.cer
SSLCertificateKeyFile /etc/ssl/hoge.key
SSLCertificateChainFile /etc/ssl/hoge-hoge.cer

により設定する。

ドメインにより証明書が異なる場合、それに合致したものを間違えないように使う。


参考にしたサイト

http://blog.dawgsdk.org/weblog/archives/411011

http://kana-lier.com/web/redirect/#sec2

http://aoi-f.blog.so-net.ne.jp/2010-08-20-1

http://web.antenna.work/rewritecond-rewriterule/

https://www.suzukikenichi.com/blog/integrating-www-and-non-www-by-301-redirect/

http://rfs.jp/server/apache/02apache/url_rewrite.html

https://gist.github.com/y13i/65a73493b55474f9a658

http://web-tan.forum.impressrd.jp/e/2010/01/05/6369#www

http://digital-marketing.jp/site-renewal-301-redirect/