ディレクトリの参照を無効にするにはどうすればよいですか?


回答:


420

次の行を含む.htaccessファイルを作成します。

Options -Indexes

これは1つのオプションです。別のオプションは、Apache構成ファイルを編集することです。

これを行うには、まず次のコマンドで開く必要があります。

vim /etc/httpd/conf/httpd.conf

次に、行を見つけます:オプションインデックスFollowSymLinks

その行を次のように変更します:オプションFollowSymLinks

最後にファイルを保存して終了し、次のコマンドでApacheサーバーを再起動します。

sudo service httpd restart

ここにスクリーンショットのガイドがあります。)


14
これは実際の
.conf

1
@chrismarxどの.confファイルを入れますか?.htaccessがサーバーで有効になっていないようです。私は読んだので、とにかくそれを使わない方が良いです。ただし、vpsなので、すべてのサーバーファイルにアクセスできます。
チャールズジョントンプソンIII

1
私はこの同じ質問で立ち往生しています。コードを含む.htaccessファイルを自分のWebページと同じディレクトリに追加しましたが、それでもディレクトリ参照アラートが表示されます。私は何か間違ったことをしていますか?
Randy Gilman

10
.htaccessオフになっている可能性があることに注意してください。AllowOverride指令を確認してください。に設定されている場合None.htaccessオフになります。を設定するとオンになりますAllowOverride All。より正確にAllは、すべてのApacheディレクティブを意味します。
ジュリアン

2
http.confを制御できる場合は、そこで実行することをお勧めします。htaccessのパフォーマンスに
影響

298

これを行う最善の方法は、webserver apache2で無効にすることです。私のUbuntu 14.X- /etc/apache2/apache2.confからのオープンな変更

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

次に、次のようにしてApacheを再起動します:

sudo service apache2 reload

これにより、apache2が提供するすべてのフォルダからのディレクトリリストが無効になります。


11
「sudo service apache2 reload」で十分です!
doctorlai 2016年

2
@Jay私も "Options -indexes"を試しましたが、Apacheはあとがきになりません。サーバーバージョンを実行しています:Apache / 2.4.18(Ubuntu)。ただし、「オプションFollowSymLinks」の使用は、Dungの回答に従って機能しました。実行しているApacheとOSのバージョンに興味がありますか?多分それはバージョンのものですか?
MikeyE 16

@Jay @MikeyEここでも同じです。Apacheがリロードしない-Indexes
Crimbo

1
@Jay @MikeyE削除すると、Apacheがリロード/再起動するようですFollowSymLinks
Crimbo

2
httpd.conf apachectl configtestに追加Options -Indexes FollowSymLinksした後に実行すると、次のエラーが出力されます:「すべてのオプションは+または-で始まる必要があります。そのため、何だろう働くことであるOptions -Indexes +FollowSymLinks
ジョン・T.

45

前述の2つの方法(/etc/apache2/apache2.confを編集するか、.htaccessファイルにOptions -Indexesを追加)とは別に、ここにもう1つあります。

a2dismod autoindex

その後、apache2サーバーを再起動します

sudo service apache2 restart

4
あなたは使用することができるa2dismod -f autoindexため非ブロッキングコマンドの実行。
КонстантинВан

素晴らしい核オプション!これAliasは、Apacheが提供するフォルダーおよびその他のパスに対して機能します。
kontextify 2018年

副作用があることを知っておくべきですか?
Naresh Kumar

28

これで.htaccessファイルを編集/作成します/galerias

Options -Indexes

ディレクトリの参照は、mod_autoindexモジュールによって提供されます。


-ルートディレクトリのインデックスが機能しません。apache2.4.33では、@ Sarvar Nishonboyevの回答を使用する必要がありました
Felipe Valdes

1
@FelipeValdes質問と私の回答の両方を注意深く読んでください。私たちはルートディレクトリではなくサブディレクトリについて話しているのですが、.htaccessファイルで実行可能であることが要求されています(これは、最もパフォーマンスの高い方法ではありませんが、共有ホスティングアカウントまたは忙しいシステム管理者との唯一のオプションです)。
アルバロゴンサレス

23

index.htmlリストしたくない各ディレクトリに、空のファイルを置くことができます。これにはいくつかの利点があります。

  • (通常)サーバー上での構成は不要です。
  • サーバー管理者がサーバー構成で「AllowOverride None」を使用することを決定した場合でも、機能し続けます。(.htaccessファイルを使用している場合、これはユーザーに多くの「エラー500-内部サーバーエラー」メッセージを引き起こす可能性があります!)
  • また、Apacheの設定を変更することなく、サーバー間でファイルを移動することもできます。

理論的には、自動インデックス作成は別のファイルによってトリガーされる可能性があります(これはDirectoryIndexオプションによって制御されます)が、実際にはまだこれに遭遇していません。


注意喚起!これはindex.html、主に定義されたDirectoryIndexディレクティブでのみ機能します。
nyedidikeke

18

安全なApache Webサーバーを設定する上で重要なことの1つは、ディレクトリの参照を無効にすることです。デフォルトでは、Apacheにはこの機能が有効になっていますが、本当に必要でない限り、無効にすることを常にお勧めします。Apacheフォルダーのhttpd.confファイルを開き、次のような行を見つけます。

Options Includes Indexes FollowSymLinks MultiViews

次に、単語Indexesを削除してファイルを保存します。Apacheを再起動します。それでおしまい


1
完璧です。マシン全体で無効にします。なぜこれがデフォルトで有効になっているのですか、私には
わかり

1
これはUbuntu(apache2.conf)では機能しましたが、.htaccessオプション-Indexesは機能しませんでした。
Danniel Little

これはUbuntu(/etc/apache2/apache2.conf)では機能しましたが、.htaccessオプション-Indexesは機能しませんでした。
user2875289

5

これを解決するためにhttpd.confファイルを変更することを選択し、複数のオプションディレクティブがある場合は、各ディレクティブの前に-または+を追加する必要があります。例:

オプション-Indexes + FollowSymLinks


3

これは答えではなく、私の経験です:

私のUbuntu 12.04 apache2では、Indexesapache2.confとhttpd.confのどちらにも見つかりませんでしたが、幸いにもで見つかりましたsites-available/default。削除すると、ディレクトリリストが表示されなくなります。のためにそれをしなければならないかもしれませんsites-available/default-ssl


2

.htaccessファイルを開き、次のコードを入力します

Options -Indexes

「Options -Indexes」という単語を入力した後、Enterキー(またはMacを使用する場合はRETURNキー)を押して、ファイルが空白行で終わることを確認してください。


2

これを.htaccessファイルに追加します。

Options -Indexes

何らかの理由で機能しない場合は、.htaccessファイル内で次のことを試してください。

IndexIgnore *

1

@GauravKachhadiyaの回答を完了するには:

IndexIgnore *.jpg

.jpg拡張子ファイルのみをインデックスから非表示にします。

IndexIgnoreディレクティブは、ワイルドカード式を使用して、ディレクトリおよびファイルと照合します。

  • スター文字。文字列内のすべての文字に一致します。例:fooまたはfoo.extension。次の例では、ディレクトリのリストをオフにします。ファイルやディレクトリはインデックスに表示されません。

    IndexIgnore *

または、ディレクトリリストで特定のファイルを非表示にする場合は、次を使用できます。

IndexIgnore *.php

* .php =>は、任意の文字で始まり.phpで終わる文字列に一致します

上記の例は、.phpで終わるすべてのファイルを非表示にします


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.