さくらのレンタルサーバーでデフォルトのドメインを非公開にする方法
さくらのレンタルサーバーでデフォルトで付与されるドメイン( 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.com
で https
プロトコルを受け付けている場合は次のようになります。
<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>
以上です。