2018/04/27更新

[サーバー] 常時https対応と、www統一のhtaccessの書き方(XSERVERなど)

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
XSERVERで、常時SSLとwww統一の対応について、htaccessを記述する機会があったので、その内容をブログに書いておきたいと思います。



目次




常時SSL対応とwww統一のhtaccess

.htaccessファイルは以下のように記載します。ドメイン名は設定したいサイトに合わせて修正してください。また設定前には必ず現状のバックアップを取り(.htaccessファイル)、もし失敗しても戻せるようにしておく必要もあります。
# Apacheのリライト機能が有効な場合のみに限定
<IfModule mod_rewrite.c>

# リライト機能をONにする
RewriteEngine on

# httpでアクセスされた場合には、httpsへリダイレクト.
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# wwwなしでアクセスされた場合には、www付きにリダイレクト.
RewriteCond %{HTTP_HOST} ^yoheim\.net [NC]
RewriteRule ^(.*) https://www.yoheim.net/$1 [R=301,L]

</IfModule>
%{xxx}などのHTTP環境変数や、NSR=301Lなどの条件指定など専門的なものがありますが、詳細は以下のリンクをご参照ください。

Apacheのmod_rewriteモジュールの使い方を徹底的に解説 | OXY NOTES

RewriteRule Flags - Apache HTTP Server Version 2.4(公式、英語)



サクラのレンタルサーバーの場合

サクラさんの特殊事情により、上記では常時SSL対応ができません。以下のように行います。
# リライト機能をONにする
RewriteEngine On

# 「ENV:HTTPS」に「on」ではない
RewriteCond %{ENV:HTTPS} !^on$
# または、「X-SAKURA-FORWARDED-FOR」に値が入っていない
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
# 場合には、https://〜 へリダイレクトする.
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
詳しくはX-SAKURA-FORWARDED-FORなどをキーワードに検索して見てください。



最後に

このようなスニペットはコピペして使えるので、知って入れば非常に効率的に作業ができます。ぜひ貯めておきたいTipsです。

最後になりますが本ブログでは、フロントエンド、サーバー、Swift、PHP、Node.js、Python、Java、Linux、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

[NodeJS] nodeで例外処理を書いて、最低限落ちないサーバー実装を行うException Handler
[NodeJS] requestモジュールを使って、サーバーから画像ファイルをダウンロードする
[サーバー] さくらVPSのセットアップ② 〜 nginxのインストール、Jenkinsのインストール、nginxとJenkinsの接続(リバースプロキシ)、nginxとPHP、パケットフィルタリング、など 〜
[サーバー] さくらVPSのセットアップ① 〜 OSの確認、ユーザー作成、Git、Ruby導入 〜
[サーバー] AmazonLinuxにMySQL5.7をインストールする
[サーバー] MySQL5.7でrootのパスワードを忘れた場合のリセット方法(CentOSやAmazonLinuxの場合)
[Go] net/httpパッケージでWebサーバー(handlerの書き方、静的ファイル配信、Basic認証、など)
RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。