• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:webサイトの「index」を非表示にしたい)

webサイトの「index」を非表示にする方法

このQ&Aのポイント
  • webサイトで「http://○○/index.html」の「index」を非表示にしたいのですがうまくいきません。
  • .htaccessファイルの設定をしても、indexが表示されてしまいます。
  • ブックマークからサイトにアクセスするとindexが表示されることがあります。どこか間違っている箇所があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

<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で指定したファイルが帰ってくるはずです。

o_coco3
質問者

お礼

ご回答ありがとうございます! すごく丁寧に書いて頂けて感謝です! なるほど~~。あまり意味はわからずにネットで見たまま使っていました....。 正規表現覚えておきます! 今回はindex.htmlの非表示と、index以下(第2階層以下全て)に パスワード制限をかけるのが最終難関だったもので。 パスワード制限の質問も出していますので よろしければお時間ある時に覗いてみて下さい。 http://oshiete.goo.ne.jp/qa/7721313.html index非表示の件解決致しました! index.htmlへのリンクを全て「http://◯◯.com/◯◯/」に差し替えました。 .htaccessは使わずでよかったんですね。 本当にありがとうございました!

その他の回答 (6)

回答No.7

すみません、既に回答がありました。 .htaccessの内容は、この質問に関連する内容を全て消してください。

o_coco3
質問者

お礼

回答ありがとうございます! 質問の件解決致しました! 今回は根本的に認識不足でした...。 .htaccessは特に何もせずでよかったですね。 あありがとうございました。

回答No.6

>他のページからINDEXページに戻ってきた際に >indexが表示されています。 .htaccessではなく、個々のHTMLファイルの問題だと思います。 その時のリンクの仕方を、<a href="/">というようにファイル名を書かないようにしてみてください。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.5

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

  • tkmojo
  • ベストアンサー率50% (105/207)
回答No.3

リンクに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。

o_coco3
質問者

お礼

ご回答ありがとうございます! リンクを「./」で記述するとうまくいきました! ありがとうございます! あと絶対パスで記述する場合ですが、 「http://○○○.com/」でよろしいでしょうか? そう記述した場合、なぜかまたindex.htmlが 表示されるのですがどこか間違っていますでしょうか? ちなみにhtaccessの記述は下記になります。 【htaccess記述内容】 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes order deny,allow もし間違いがあればご指導お願い致します! よろしくお願い致します。

noname#235729
noname#235729
回答No.2

 他のページからのリンク内のアドレスを「http://○○/index.html」にしてませんか?  「http://○○/」と省いておけば、「index.html」は付かないはずですよ。  ブックマークのアドレスも「index.html」がついてるかもしれませんね。  ちゃんと省略されて「http://○○/」となっているか確認してみてください。

o_coco3
質問者

お礼

ご回答ありがとうございます! リンクは「http://○○○.com/」にしているのですが なぜかindex.htmlが表示されてしまいます….。 なぜでしょうか...? ちなみに非表示の記述としては htaccessで下記を記述してindexファイルと同階層に アップロードしているだけですがそれで間違いないでしょうか? 【htaccess記述内容】 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes order deny,allow もし間違いがあればご指導お願い致します!

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

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

o_coco3
質問者

お礼

ご回答ありがとうございます! そうですか~、関係なかったのですね...。 ではindexを非表示にする場合どうすればよいのでしょうか? 「http://○○.com/」みたいな表示にしたいと思っています。 宜しくお願い致します。

関連するQ&A