【個人メモ】
Apacheの設定でSSLと通常の通信を行う際の共存設定方法
バーチャルホストの設定にて実施
__Listenは80__しか開けてない
__NameVirtualHost *:443__書いてから起動時にWarnを見るように⇒不要かも?
####基本構文
<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/