ムームードメインで取得(契約)したドメインに対するアクセスのみ許可し、さくらのレンタルサーバの初期ドメイン名に対するアクセスを許可しないように設定します。
SSHでさくらのレンタルサーバに接続して、.htaccessファイルを編集します。
MacとSSHで接続できること、viやemacsを操作できることを想定しています。
index.htmlのおさらい
最初に、.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を作成して、編集します。
.htaccessファイルを編集する
引き続き、さくらのレンタルサーバでUNIXコマンドを使って、操作します。
> 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
ブラウザーから再度アクセスして、Not Foundとなることを確認します。
https://sakura-account.sakura.ne.jp/
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の範囲内であればリダイレクトする。300-399の範囲内でなければパスの置き換えはしない(リダイレクトしない)。
L : last
今のRewriteRuleが成立したとき、以降のRewriteRuleを処理しない。
(リダイレクトした先に.htaccessがあれば置き換えた文字列で処理される)