Movable Type 備忘録

 

 ファイルの一覧を表示させない

こんにちわ^^

MovableType(ムーバブルタイプ)を使うようになって1年半くらい経ちますが、今まで気づかなかったことがあります(つω-`。)

それはさくらインターネットだと、index.html または、index.php がないディレクトリをブラウザで表示すると、ファイル一覧が見えてしまうことです Σ( ̄Д ̄;)ガーーン!!

たまたま間違ってURLを指定したら、ファイル一覧が表示されたのにはビックリです!!
しかもファイルの中味まで丸見えです!!

今日はさくらインターネットをお使いの人で、わたしのように知らなかった人のために、ファイル一覧を表示させない方法をご紹介します。

緊急度MAXですよ ( ̄∇ ̄)b

ブラウザからスラッシュ( / )で終わるURLにアクセスすると、通常はそのディレクトリにある index.html(or index.php) が表示されます。

でも、そのディレクトリ内に index.html(or index.php) がない場合は、ディレクトリ内のファイルが一覧で表示されてしまうんだそうです。
これはサーバの設定によって異なるようで、ロリポップでは「403 Forbidden」で弾いてくれていました (; ̄∇ ̄A ほっ

でも、さくらインターネットでは丸見えです!!
特別な場合を除いて許可すべきではないと教えてもらいました。

いろいろ調べたところ、.htaccess の Options ディレクティブを設定することで拒否することが可能でした。
さっそく設定してみたら、どうやらさくらインターネットでは Options ディレクティブの使用が禁止されているようです Σ( ̄Д ̄;)!!
なぜか「500 Internal Server Error」となってしまいます。

他の人はどのように回避しているのか知りませんが、わたしが対応した方法を以下に記します。

ファイルの一覧を表示させないようにする

.htaccessファイルを作成します。
その中に以下を記述してください。

.htaccess

  1. #ブログのPHP化を行っている人用
  2. DirectoryIndex index.php /index.php
  3.  
  4. #ブログのPHP化を行ってない人用
  5. DirectoryIndex index.html /index.html

- 2007.05.25 追記 -

訪問者さんからもっといい方法教えてもらいました♪
以下のように DirectoryIndex ディレクティブを指定すれば、「404 Forbidden」を表示させることができます。

.htaccess

  1. #ブログのPHP化を行っている人用
  2. DirectoryIndex index.php index.html .ht
  3.  
  4. #ブログのPHP化を行ってない人用
  5. DirectoryIndex index.html .ht

yomogi さんありがとうですの(●>∀<●)

上記は、index.html(or index.php) がないディレクトリにアクセスされた場合、表示したいページにリダイレクトするようにしています。
青い字の部分で表示したいページの、ルートディレクトリからのパスを指定しています。

記入したら、ウェブサイトのルートディレクトリの中にアップロードします。

以上で完了です。
一通りブラウザから表示確認してください。見えて欲しくないディレクトリのURLを表示すると、任意のページが表示されればOKです。

とりあえず、これでファイル一覧が表示されなくなりました。
ファイル一覧を表示させたくない、さくらインターネット・ユーザさんは早急に対応した方がいいですよ。
これは知識がある人なら当然のごとく知ってることらしいので!!

 Trackback Pings(1)

from サンレ・ラボ

あるWebサービスを検討するため、同様のサービスを提供しているサイトを参考にさせ...

 Comments(7)

#1: Posted by oscar [RES]

あれっ、DirectoryIndexはフォワードじゃ無かった様な。
ディレクトリに対するアクセス時に誘導する、デフォルトファイル名を設定する為のものだと思います。
だから、「/index.php」は必要ないかと・・・・

というかその場合、そのディレクトリ内にindex.phpが無いと、ルートのindex.phpを表示するのかな。

#2: Posted by bzbell [RES]

>>1 oscar さん

こんにちわ^^

> ディレクトリに対するアクセス時に誘導する、デフォルトファイル名を設定する為のものだと思います。

はい。わたしもそのように覚えていました。
でも、ディレクトリ内に index.php がない場合、代替として表示させるページを指定することができるようなんです。

なので、上記のように代替としてルートディレクトリの index.php(トップページ)を表示させるよう対応したんですの。

#3: Posted by oscar [RES]

>でも、ディレクトリ内に index.php がない場合、代替として表示させるページを指定することができるようなんです。

そんな仕様あったかなぁ。index.phpが無いときに、サイトルートを表示ってことですか?
確かにそれは便利だが、それってリダイレクトでも良いような。面白い仕様だな、調べてみよう。

#4: Posted by oscar [RES]

そっか解った。
DirectoryIndexは複数記述した場合、頭からトライしてみるけど、最後のはディレクトリまで指定してるんで、リダイレクトのような動作になるんだ。

でも、それなら404になるのはどんな時だ?

#5: Posted by bzbell [RES]

>>3 oscar さん
>>4 oscar さん

こんにちわ^^

> DirectoryIndexは複数記述した場合、頭からトライしてみるけど、最後のはディレクトリまで指定してるんで、リダイレクトのような動作になるんだ。

あっ! なるほど!!
そぅいう理屈でしたか (; ̄∇ ̄A

わたしもネットで Apache の説明など読んでみたのですが、今回のことは特に明記がなくて間違ったこと伝えてるのかなぁ・・・って不安だったんです (>∀< )

でも、スッキリしました!!
いつもありがとうございます (m;_ _)mペコ

> でも、それなら404になるのはどんな時だ?

本来なら以下のようにすると「404 Forbbiden」となるようですよ。

Options -Indexes
#6: Posted by yomogi [RES]

>>5 bzbell さん

はじめまして。

ファイルの一覧を表示させたくないけど、さくらのようにOptionsが使えない場合は、次のような.htaccessファイルを置く方法もありますよ。

DirectoryIndex index.html .ht

この設定だと、ディレクトリにindex.htmlがなければロリポップとおなじように「403 Forbidden」を
返します。

#7: Posted by bzbell [RES]

>>6 yomogi さん

はじめまして^^

ホントだっ!!
わたしのサイトではPHP化してるので以下のようにやってみましたの

DirectoryIndex index.php index.html .ht

ありがとうございます (●>∀<●)

 Post a Comment

コメント用フィード