初期ドメインをNot Foundにする [さくらインターネット]

最近、さくらインターネットで独自ドメインを新規公開する場合、無料SSL(https)で公開するパターンが多くなってきました。(お勧めしているので当然ですけどw)
もちろん、統一URLの正規化をしますが、
その前に忘れていけないのが初期ドメイン=サブドメインです!

通常、さくらインターネットで、独自ドメインを運用すると、
初期ドメイン=サブドメインと、独自ドメインの両方でアクセス可能です(当然、wwwありなし/indexありなし/httpsのSありなし/canonical/の正規化としてデフォ設定します)
そして、マルチドメインで運用しているのに、初期ドメイン経由のディレクトリから、独自ドメインのウェブサイトも表示できます。

まあ、マルチドメインの場合には、制作者が任意でディレクトリを設置するので、ディレクトリ名を知らない一般ユーザーからアクセスしようが無いのですが、検索エンジン(Googleなど)が誤ってインデックスしてしまうと、多くのユーザーがサブドメイン経由でアクセスしてしまう可能性もあります。
これでは、独自ドメイン側を正規化しても、初期ドメインのせいでマイナス効果になりますね。

初期ドメインのルートディレクトリから、.htaccessで、Denyにしておけば403=Forbiddenになるので、簡単だしこれだけでもOKなのですが、(今まではこの403にしていました)
ストーカーのようなユーザーだと、Forbiddenページを見て(自分だけが拒否られたと)逆ギレする例もあるようです・・・

元々何も無かったことにすれば済む話なので、
403ページよりも、404ページにした方が良いでしょう。という方向性です。

ところが、404.cgiを設置し、
ErrorDocument 403 /404.cgiと書いて、404ページに誘導すると、
404が表示されるどころか403で、それもいつもの403と違うw
Forbidden
最後の3行目が、
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
つまり、
「あのさぁ、404を指定しているから表示しようとしたら、404自体を拒否ってるからループじゃねーか! アホか」とサーバーが怒っているのです・・・
初期ディレクトリのトップディレクトリ(www)を拒否っているので、そこにある404.ファイルも拒否しちゃっているのです・・・当然の事ですよね、あららぁw

初期ドメインを404表示にする

では、どうすれば良いのか?
404.ファイルだけを除外してallowにするか、
下層にallowのディレクトリを別途作って、404.ファイルを配置する。⇐ これがベターか。

www/.htaccess(A)
   /error/.htaccess(B)
   /error/404.cgi
  1. .htaccess(A)は、独自ドメイン以外はdenyにする
    つまり、初期ドメインは表示されない。
  2. .htaccess(B)は、allowにする
    つまり、404表示を許可させる。
    ErrorDocument 403 /error/404.cgi
    ErrorDocument 404 /error/404.cgi

これで、初期ドメインへのアクセスが404表示になります。
気にるアクセス時のURL(アドレスバー表示)は、/error/などのディレクトリ名を表示せず、アクセスしたURLで表示されるので、どの下層ディレクトリに設置しても何ら問題ないです(但し、404.htmlファイルだとNGだった筈なので、404.cgiにして内部にErrorDocumentを記述しています)。
それなら別途の/error/を設置せずに、独自ドメインのディレクトリでも良いのですが、独自ドメイン用の独自404を設置するべきなので、この案は却下です(ファイル名を変えれば良いのですが、混同してミスを誘発してしまう可能性もあるから)。

この設定、今後もドメインの初期設定として採用決定です!
注意点は、
ErrorDocument 403 /404.cgiと指定するのはルート違いなので、怒られるw

エラーログにエラーが量産される

エラーログに10分毎にエラーが量産されております・・・

client denied by server configuration:
/home/アカウント名/www/.sakura_notfound.html
client denied by server configuration:
/home/アカウント名/www/.sakura_notfound.html

これは.htaccessに、
order deny,allow
deny from all

を利用していたからです・・・
さくらインターネットのApache/2.4.39では古い仕様なので、以下に変更です。

Require all granted

同じ意味=同じ動作です。
これで、client denied by server configuration:のエラーログは出なくなります。


コメント

コメントを書く
お名前:

メール:

Web URL:

コメント: [必須入力]

認証コード: [入力必須] ※ 画像の文字を半角で入力してください。
認証 : 一二三

 ※ 承認されたコメントのみ表示されます。