ムームードメインで取得(契約)したドメインに対するアクセスのみ許可し、さくらのレンタルサーバーの初期ドメイン名に対するアクセスを許可しないように設定します。
さくらのレンタルサーバーの初期ドメイン名に対して、さくらのサーバコントロールパネルから設定した後で、SSHでさくらのレンタルサーバーに接続して、.htaccessファイルを編集します。
MacとSSHで接続できること、viやemacsを操作できることを想定しています。
さくらのレンタルサーバーの初期ドメイン名に対する設定
さくらのレンタルサーバーの初期ドメイン名に対して、共有SSLを使うように設定します。
さくらのレンタルサーバーの初期ドメイン名を仮に’sakura-account.sakura.ne.jp’とします。
さくらのサーバコントロールパネルにログインして、左下にある[ドメイン/SSL設定]をクリックします。
ドメイン一覧が表示されるので、さくらのレンタルサーバーの初期ドメイン名に対して[変更]をクリックします。
さくらのレンタルサーバーの初期ドメイン名(ex. sakura-account.sakura.ne.jp)に対する設定をします。1〜6まであります。
1. 設定をお選びください
[マルチドメインとして使用する(推奨)]のみ選択可能です。
2. マルチドメインの対象のフォルダをご指定ください
さくらのレンタルサーバーの初期ドメイン名に対しては変更できません。
3. メール利用をお選びください
さくらインターネットで取得(契約)したドメイン(.comや.co.jpなど)のみ設定が可能なので、設定できません。
4. SSLの利用をお選びください
[共有SSLを利用する]を選択します。
さくらのレンタルサーバーの初期ドメイン名に対しては共有SSLに設定します。
さくらインターネットの情報は下記です。参照ください。
独自SSL
5. SPFレコードの利用を選んでください
チェックを外します。
メール利用の予定が無い場合です。デフォルトはチェックが入っています。ですが、使わないサービスは無効にした方が良いです。
6. IPv6アドレスの利用を選んでください
チェックを外します。
デフォルトはチェックが外れています。そのままにします。
[送信]をクリックします。
.htaccessファイルを変更する
最初に、.htaccessが無い場合の動作をテストします。下記にブラウザー経由でアクセスします。
https://sakura-account.sakura.ne.jp/
(‘sakura-account’の部分は適宜置き換えてください)
/home/sakura-account/www/にindex.htmlを置いていなくてもファイル一覧は表示されないことを確認します。(2018.04.01)
次に、ファイルに直接アクセスするときのテストをします。
SSHでさくらのレンタルサーバーに接続します。
% ssh sakura-account@sakura-account.sakura.ne.jp
パスワードを入力
SSHの使い方については、SSHを使うで説明しています。
README.txtを作成して、アクセスするテストをします。
まず、README.txtを作成します。
> cd ~/www
> cat 'access test' > README.txt
ブラウザーからアクセスします。
https://sakura-account.sakura.ne.jp/README.txt
直接アクセスすると、内容が見えることを確認します。
このようなアクセスに対してもファイルが見えないように.htaccessで制御します。.htaccessを作成して、編集します。
> cd ~/www
> vi .htaccess
編集の内容は下記です。最後に1行あけます。
RewriteEngine on
RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp
RewriteRule ^.*$ - [R=404,L]
設定について説明します。
RewriteEngine on
RewriteEngine onとして、後に続くRewriteCondやRewriteRuleを有効にします。
RewriteCond %{HTTP_HOST} .+\.sakura\.ne\.jp
ホスト名と’任意の文字列.sakura.ne.jp’が一致するとき、という条件を意味します。
RewriteRule ^.*$ - [R=404,L]
リクエストされたドキュメント(例. /app1/index.html)が先頭から任意の1文字をゼロ回以上繰り返して最後に来る文字列(=文字なしを含む全ての文字列)とマッチする場合、置き換えをせずに、404を返して、以降の処理をしないことを意味します。つまり、RewriteCondの条件が成立したときは、404を返す、という記述になります。
パーミッションを変更します。644か604にします。
> chmod 604 .htaccess
ブラウザーから再度アクセスして、ファイルの内容が見えないことを確認します。
https://sakura-account.sakura.ne.jp/README.txt
お疲れさまです。
参考
- RewriteEngine
-
https://httpd.apache.org/docs/current/mod/mod_rewrite.html
The RewriteEngine directive enables or disables the runtime rewriting engine.
Use this directive to disable rules in a particular context, rather than commenting out all the RewriteRule directives.
訳 : rewriting engineを有効にする、または無効にする。RewriteRuleを全てコメントアウトするのではなくて、RewriteEngine offを使ってください。
- – (dash)
-
https://httpd.apache.org/docs/current/mod/mod_rewrite.html
A dash indicates that no substitution should be performed (the existing path is passed through untouched).
This is used when a flag (see below) needs to be applied without changing the path.
訳 : ‘-‘はパスの置き換えをしない。
- Apacheの正規表現
-
https://httpd.apache.org/docs/2.4/rewrite/intro.html
^ 文字列の先頭([]の中の^は否定を意味します) . 任意の1文字 \ エスケープシーケンス(\.でピリオドを表す) + 1回以上の繰り返し * 0回以上の繰り返し $ 文字列の最後
- R=404,L
-
https://httpd.apache.org/docs/2.4/rewrite/flags.html
R : redirect
ステータスコードが300-399の範囲内でなければパスの置き換えはしない(リダイレクトしない)。
L : last
今のRewriteRuleが成立したとき、以降のRewriteRuleを処理しない。
(リダイレクトした先に.htaccessがあれば置き換えた文字列で処理される)