プロが教えるわが家の防犯対策術!

質問です。

WEbサイトで「http://○○/index.html」の
「index」を非表示にしたいのですがうまくいきません。

「.htaccess」で

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow

と入力しサーバにアップはしているのですが、
他のページからINDEXページに戻ってきた際に
indexが表示されています。

最初にWEBページにやってきた時は消えている時もあります。
ブックマークからサイトにくると表示されています。

どこか間違っている箇所があるか
教えて頂けると幸いです。

よろしくお願い致します。

教えて!goo グレード

A 回答 (7件)

<Files ~ "^\.(htaccess|htpasswd)$"> .htaccessファイルと.htaccessファイルは


deny from all  誰からもダメだよ
</Files>
Options -Indexes  Index を有効にしますよ
order deny,allow  

と言う意味です。したがって書かなくても良い。デフォルトで^\.はdenny from allになっているはずです。
 正規表現の意味はわかりますよね、
^ 行頭を表します。
\ 次に続く文字を文字通り解釈するようにエスケープします。
. 任意の文字を示します。エスケープされているので.(ドット)の文字を示します。
( | ) | はorですね。前者でなければ後者、この場合htaccessでなければhtapaawd
$ は行末を示します。

 正規表現はとても大事な基礎知識ですから覚えておきましょう。

HTTPサーバーとブラウザの仕事、

たとえば、あるページ(http://hoge.com/abc/efg/hij.html)内にあるリンクが
<a href="../www/abc">だったとすると、
【ブラウザ】は!!!-----ブラウザですよ。
|--/abc
|  |-- efg/
|     |-- hij.html
そのファイルが
|--/abc
|  |-- www/
|     |-- abc
であると判断して、サーバーに
GET:/abc/www/abc
と要求します。
 サーバーは、abcがファイルであれば、それを提供しますが、そのファイルが.htaccessなどで実行ファイルとして指定してあれば、処理を処理系に渡します。
 もしそうでなければ、それがディレクトリかもしれないと開いてみます。もしディレクトリでしたら、内部にDirectoryIndexで指定してあるファイルがないか調査します。
[例]
<IfModule dir_module>
DirectoryIndex index.html index.htm index.cgi index.sh
</IfModule>
の場合は、index.htmlから順番に探します。それがあれば提供します。

 それもなかった場合は、/abcを環境変数PATH_INFOに格納して、wwwについて同様の判断をします。
 それもなかったら、PATHINFOに/www/abcを格納して、トップディレクトリを精査します。

 このように、どのファイル(パスを含めて)を要求するかは、ブラウザの仕事であり、その要求にこたえるのはHTTPサーバーの仕事です。
 ですから、redirectなどで遷移しない限り、要求したものと同じURLが表示されるはずです。

 ブラウザが勝手にindex.htmlを付けることはありません。上の説明でわかるようにサーバーによるとindex.html ではなくて、index.htm だったり、index.cgi だったりindex.shだったり、INDEX.HTMだったりindex.phpだったり、ひょっとするとabcかもしれないのですから・・

 単にリンクの末尾にindex.htmlないし/index.htmlをつけなければ、そのままサーバーのDirectoryIndexで指定したファイルが帰ってくるはずです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
すごく丁寧に書いて頂けて感謝です!

なるほど~~。あまり意味はわからずにネットで見たまま使っていました....。
正規表現覚えておきます!

今回はindex.htmlの非表示と、index以下(第2階層以下全て)に
パスワード制限をかけるのが最終難関だったもので。

パスワード制限の質問も出していますので
よろしければお時間ある時に覗いてみて下さい。
http://oshiete.goo.ne.jp/qa/7721313.html

index非表示の件解決致しました!
index.htmlへのリンクを全て「http://◯◯.com/◯◯/」に差し替えました。
.htaccessは使わずでよかったんですね。

本当にありがとうございました!

お礼日時:2012/09/29 01:16

すみません、既に回答がありました。



.htaccessの内容は、この質問に関連する内容を全て消してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

質問の件解決致しました!

今回は根本的に認識不足でした...。
.htaccessは特に何もせずでよかったですね。

あありがとうございました。

お礼日時:2012/09/29 01:20

>他のページからINDEXページに戻ってきた際に


>indexが表示されています。

.htaccessではなく、個々のHTMLファイルの問題だと思います。
その時のリンクの仕方を、<a href="/">というようにファイル名を書かないようにしてみてください。
    • good
    • 0

補足です。

わすれてました。
できれば、具体的ファイル名を指定しておくべきです。説明を読まれてわかるように、サーバーに負荷がかかります。第三者に名刺などで知らせる場合に限り、入力を簡単にするために書かないことがありますが、サイト内のリンクの場合には書くべきですし、書いたほうがスマートです。
 またサイトのメンテナンスをするときに、新しいファイルをすべて.htmで作成して、DirectoryIndexを書き換えてテストするなどのとき困ります。
    • good
    • 0

リンクにindex.htmlを書かなければいいだけです。


スラッシュで終われば、普通のサーバーはinde.htmlもしくはindex.phpを勝手に探して表示します。

<a href="index.html"> ⇒ <a href="./">
<a href="../index.html"> ⇒ <a href="../">
<a href="hoge/index.html"> ⇒ <a href="hoge/">

こんな感じで変更すればOK。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

リンクを「./」で記述するとうまくいきました!
ありがとうございます!

あと絶対パスで記述する場合ですが、
「http://○○○.com/」でよろしいでしょうか?

そう記述した場合、なぜかまたindex.htmlが
表示されるのですがどこか間違っていますでしょうか?

ちなみにhtaccessの記述は下記になります。

【htaccess記述内容】
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow


もし間違いがあればご指導お願い致します!

よろしくお願い致します。

お礼日時:2012/09/28 16:36

 他のページからのリンク内のアドレスを「http://○○/index.html」にしてませんか?



 「http://○○/」と省いておけば、「index.html」は付かないはずですよ。
 ブックマークのアドレスも「index.html」がついてるかもしれませんね。

 ちゃんと省略されて「http://○○/」となっているか確認してみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

リンクは「http://○○○.com/」にしているのですが
なぜかindex.htmlが表示されてしまいます….。

なぜでしょうか...?

ちなみに非表示の記述としては
htaccessで下記を記述してindexファイルと同階層に
アップロードしているだけですがそれで間違いないでしょうか?

【htaccess記述内容】
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow


もし間違いがあればご指導お願い致します!

お礼日時:2012/09/28 16:28

Options の Indexes は、URLに index.html を表示させるかどうかの制御をする物ではありません。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

そうですか~、関係なかったのですね...。

ではindexを非表示にする場合どうすればよいのでしょうか?

「http://○○.com/」みたいな表示にしたいと思っています。

宜しくお願い致します。

お礼日時:2012/09/28 14:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング