SLiberté.Net

SSL 301リダイレクト設定 4種 備忘録 コピペ可 (.htaccess PHP JavaScript)

いずれか可能なものを配置(記入)することでドメイン問わずそのままコピペで利用可能

JavaScript は301ではないけど、一応 非SSLからSSLに持っていけるので...

.htaccess (Apache)

1<IfModule mod_rewrite.c>
2  RewriteEngine On
3  RewriteBase /
4  RewriteCond %{HTTPS} off
5  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
6</IfModule>

1、7行目は mod_rewriteというURLの書き換え用モジュールがインストールされてい場合に適用されるよってこと 有無がわかっている場合は省略可能

2行目は 上記モジュールエンジンを有効に 3行目は 有効範囲の指定ですのでこの場合は省略可能

5行目 は非SSL通信かどうかの確認(そうでなければ何もしない) です。
6行目 は 5行目で設定した条件に従い SSL通信へ301リダイレクト

httpd.cnf (Apache)

1RewriteEngine on
2RewriteCond %{HTTPS} off
3RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

VPSや自宅サーバーなどで複数サイトを管理している場合は一括管理できるかも

PHP(少ページの場合)

1if (empty($_SERVER['HTTPS'])) {
2    header( "HTTP/1.1 301 Moved Permanently" ); 
3    header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
4    exit;
5 }

JavaScript(更に少ページ)

1if(!(location.protocol === "https:")){
2    location.href="https://" + location.host + location.pathname;
3 }else{
4     };
5}

コメント