web-dev-qa-db-ja.com

ディレクトリが空の場合のapache2カスタムエラー

通常、ディレクトリにindex.htmlファイルがない場合、Apacheは上部に「Indexof/subdir」というページを表示し、すべてのファイルを一覧表示します。これの代わりにカスタムエラーページを表示するにはどうすればよいですか?できれば、.htaccessファイルに入れることができるもの

1
OfficialCRUGG

デフォルトでは、Apache構成には次のような構成行があります。

DirectoryIndex index.html index.php index.cgi

これは、ディレクトリがファイル部分なしで要求されたときに、ディレクトリのコンテンツを表示するためにそれらのファイルが検索される順序を定義します。見つからず、自動インデックス機能が有効になっている場合は、ディレクトリの内容が一覧表示されます。

ただし、次のようにDirectoryIndexの絶対パスを定義することもできます。

DirectoryIndex index.html /default/index.html

これで、ディレクトリにindex.htmlがない場合は、(DocumentRootに対して)/default/index.htmlの内容が使用されます。これは、まさにあなたが求めているものだと思います。

4
wurtel

まず第一に: my pet peeve。htaccessのマニュアル ファイルから引用:

Httpdメインサーバー構成ファイルにアクセスできる場合は、。htaccessファイルを完全に使用しないようにする必要があります。 .htaccessファイルを使用すると、Apachehttpサーバーの速度が低下します。 .htaccessファイルに含めることができるディレクティブは、パフォーマンスが向上しても同じ効果があるため、Directoryブロックに設定する方が適切です。


次の設定により、 自動インデックス生成 を無効にできます。

<Directory /var/www>
    Options -Indexes
</Directory> 

その後、IndexDocumentを使用せずに空のディレクトリにアクセスすると、ディレクトリリストではなく、一般的なエラー403 Forbiddenが生成されます。

次に、 ErrorDocument を設定することで、代わりに表示される内容を調整できます。

<Directory /var/www>
    Options -Indexes
    ErrorDocument 403 /errors/403.html
</Directory> 
2
HBruijn