さくらのレンタルサーバーでデフォルトのドメインを非公開にする方法

さくらインターネット

さくらのレンタルサーバーでデフォルトで付与されるドメイン( xxx.sakura.ne.jp )を非公開にする方法について。

独自ドメインの方を利用するようになるとデフォルトのドメインを非公開にしたくなります。 しかし、コントロールパネルにはデフォルトのドメインを非公開にできるような管理項目が見つかりません。 幸いさくらのレンタルサーバーでは .htaccess が利用できるようになっているので、これを使ってサイトを非公開にするのがもっともよい方法かと思います。

やり方はどの場合でも結局同じなのですが、場合分けした方がわかりやすいので以下 2 つのケースに分けて説明します。

  • A. カスタムドメインをひとつだけ利用する場合
  • B. カスタムドメインを複数利用する場合

A. カスタムドメインをひとつだけ利用する場合

カスタムドメインをひとつだけ利用する場合はデフォルトの /home/ユーザ名/www ディレクトリをそのままサイトルートとして使っている場合がほとんどかと思います。

この場合は次の A1 A2 のパターンから好きな方を選択すれば OK です。 どちらがいいかは好みの問題でしょう。 いずれも /home/ユーザ名/www/.htaccess ファイルにコードを追加します。

A1 アクセス拒否する

# デフォルトのドメインへのアクセスをすべて拒否する
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp
  RewriteRule ^.*$ - [R=404,L]
</IfModule>

A2 カスタムドメインにそのままリダイレクトする

# デフォルトのドメインへのアクセスをすべてカスタムドメインの方にリダイレクトする
# ドメインよりも下のパス部分は保持する
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp
  RewriteRule ^(.*)$ http://実際のドメイン名%{REQUEST_URI} [R=301,L]
</IfModule>

たとえばサイトのドメインが gotohayato.comhttps プロトコルを受け付けている場合は次のようになります。

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp
  RewriteRule ^.*$ https://gotohayato.com%{REQUEST_URI} [R=301,L]
</IfModule>

また、 A1 A2 いずれの場合でも RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp の行は次のように書いても OK です。

RewriteCond %{HTTP_HOST} 実際のサブドメイン\.sakura\.ne\.jp

B. カスタムドメインを複数利用する場合

つづいてカスタムドメインを複数利用する場合です。 こちらは、 /home/ユーザ名/www の下にサイトごとにディレクトリを切ってそれぞれにドメインを割り当てているようなイメージです。

  • /home/ユーザ名/www/example1.com: example1.com サイトに利用
  • /home/ユーザ名/www/example2.com: example2.com サイトに利用

こちらは /home/ユーザ名/www 直下に各サイトのルートディレクトリ以外には何も置いていなくて、それらを公開するつもりもない場合は A の場合よりもシンプルな次のパターンで OK です。

# デフォルトのドメインへのアクセスをすべて拒否する
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^.*$ - [R=404,L]
</IfModule>

B の場合の対策としては空の index.html を置くことも考えつくのですが、こちらだと万が一サイトディレクトリにアクセスされた場合に本来想定しているドメイン以外で各サイトにアクセスされてしまうので、アクセスをすべて拒否する形にするのがよいかと思います。

あるいは次のように独自ドメインのトップページにすべてリダイレクトする形でもよいでしょう。

# 独自ドメインのサイトのトップページにリダイレクト
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^.*$ http://リダイレクト先のドメイン [R=301,L]
</IfModule>

以上です。


アバター
後藤隼人 ( ごとうはやと )

Python や PHP を使ってソフトウェア開発やウェブ制作をしています。詳しくはこちら