- ベストアンサー
webサイトの「index」を非表示にする方法
- webサイトで「http://○○/index.html」の「index」を非表示にしたいのですがうまくいきません。
- .htaccessファイルの設定をしても、indexが表示されてしまいます。
- ブックマークからサイトにアクセスするとindexが表示されることがあります。どこか間違っている箇所があるか教えてください。
- みんなの回答 (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で指定したファイルが帰ってくるはずです。
その他の回答 (6)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
すみません、既に回答がありました。 .htaccessの内容は、この質問に関連する内容を全て消してください。
お礼
回答ありがとうございます! 質問の件解決致しました! 今回は根本的に認識不足でした...。 .htaccessは特に何もせずでよかったですね。 あありがとうございました。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
>他のページからINDEXページに戻ってきた際に >indexが表示されています。 .htaccessではなく、個々のHTMLファイルの問題だと思います。 その時のリンクの仕方を、<a href="/">というようにファイル名を書かないようにしてみてください。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
補足です。わすれてました。 できれば、具体的ファイル名を指定しておくべきです。説明を読まれてわかるように、サーバーに負荷がかかります。第三者に名刺などで知らせる場合に限り、入力を簡単にするために書かないことがありますが、サイト内のリンクの場合には書くべきですし、書いたほうがスマートです。 またサイトのメンテナンスをするときに、新しいファイルをすべて.htmで作成して、DirectoryIndexを書き換えてテストするなどのとき困ります。
- tkmojo
- ベストアンサー率50% (105/207)
リンクに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。
お礼
ご回答ありがとうございます! リンクを「./」で記述するとうまくいきました! ありがとうございます! あと絶対パスで記述する場合ですが、 「http://○○○.com/」でよろしいでしょうか? そう記述した場合、なぜかまたindex.htmlが 表示されるのですがどこか間違っていますでしょうか? ちなみにhtaccessの記述は下記になります。 【htaccess記述内容】 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes order deny,allow もし間違いがあればご指導お願い致します! よろしくお願い致します。
他のページからのリンク内のアドレスを「http://○○/index.html」にしてませんか? 「http://○○/」と省いておけば、「index.html」は付かないはずですよ。 ブックマークのアドレスも「index.html」がついてるかもしれませんね。 ちゃんと省略されて「http://○○/」となっているか確認してみてください。
お礼
ご回答ありがとうございます! リンクは「http://○○○.com/」にしているのですが なぜかindex.htmlが表示されてしまいます….。 なぜでしょうか...? ちなみに非表示の記述としては htaccessで下記を記述してindexファイルと同階層に アップロードしているだけですがそれで間違いないでしょうか? 【htaccess記述内容】 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Options -Indexes order deny,allow もし間違いがあればご指導お願い致します!
- t_ohta
- ベストアンサー率38% (5238/13705)
Options の Indexes は、URLに index.html を表示させるかどうかの制御をする物ではありません。
お礼
ご回答ありがとうございます! そうですか~、関係なかったのですね...。 ではindexを非表示にする場合どうすればよいのでしょうか? 「http://○○.com/」みたいな表示にしたいと思っています。 宜しくお願い致します。
お礼
ご回答ありがとうございます! すごく丁寧に書いて頂けて感謝です! なるほど~~。あまり意味はわからずにネットで見たまま使っていました....。 正規表現覚えておきます! 今回はindex.htmlの非表示と、index以下(第2階層以下全て)に パスワード制限をかけるのが最終難関だったもので。 パスワード制限の質問も出していますので よろしければお時間ある時に覗いてみて下さい。 http://oshiete.goo.ne.jp/qa/7721313.html index非表示の件解決致しました! index.htmlへのリンクを全て「http://◯◯.com/◯◯/」に差し替えました。 .htaccessは使わずでよかったんですね。 本当にありがとうございました!