7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XREAの標準提供ドメインを常時SSL化する

Last updated at Posted at 2018-11-04

XREAの標準ドメイン

XREAのサーバーをレンタルすると,標準ドメインとして [ユーザ名].[サーバ名].xrea.com(以下、標準ドメインと呼ぶ) が提供されるが,このドメインはSSLに対応していない.XREAではこのドメインの頭に https://[対応SSLサーバ名].xrea.com/(以下、SSLドメインと呼ぶ) をつけることでSSL化することができる.

問題点

通常であれば,.htaccessで

.htaccess
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://[SSLドメイン]/[標準ドメイン]/$1 [R=301,L]

とすればリダイレクトできるが,XREAではHTTPSでアクセスしていても_$SERVER["HTTPS"]がNULLを返すため,リダイレクトがループしてしまう._$SERVER["HTTP_HOST"]も「SSLドメイン」ではなく「標準ドメイン」を返すため区別できない.

解決法

事前に手動で「SSLドメイン」にアクセスし,以下のようなphpファイルを実行してリモートアドレスを取得する.

<?php
  echo $_SERVER["REMOTE_ADDR"];
?>

XREAの共有SSLはプロキシサーバを経由することで実現しているらしく,「SSLドメイン」と「標準ドメイン」で違うアドレスが返ってくるので,.htaccessで

.htaccess
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^[SSLドメインのリモートアドレス]
RewriteRule ^(.*)$ https://[SSLドメイン]/[標準ドメイン]/$1 [R=301,L]

としておけば,HTTPアクセス時のみリダイレクトされる.

####- 注意 -
この設定によりphpMyAdminにアクセスできなくなるので,phpMyAdminを触りたいときは.htaccessをコメントアウトして無効化する必要がある.

おまけ

独自ドメインと標準ドメインを共存させてどちらも常時SSL化する

独自ドメインはあらかじめコンパネで無料SSLを有効化させておく.
以下のように.htaccessを設定する.

.htaccess
RewriteEngine on

RewriteCond %{REMOTE_ADDR} !^[SSLドメインのリモートアドレス]
RewriteRule ^(.*)$ https://[SSLドメイン]/[標準ドメイン]/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST"} !^[標準ドメイン]
RewriteRule ^(.*)$ https://[独自ドメイン]/$1 [R=301,L]

こうすることで,**http://[標準ドメイン]でアクセスした場合はhttps://[SSLドメイン]/[標準ドメイン]**が,**http://[独自ドメイン]でアクセスした場合はhttps://[独自ドメイン]**がリダイレクトされる.

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?