通常、ディレクトリにindex.htmlファイルがない場合、Apacheは上部に「Indexof/subdir」というページを表示し、すべてのファイルを一覧表示します。これの代わりにカスタムエラーページを表示するにはどうすればよいですか?できれば、.htaccessファイルに入れることができるもの
デフォルトでは、Apache構成には次のような構成行があります。
DirectoryIndex index.html index.php index.cgi
これは、ディレクトリがファイル部分なしで要求されたときに、ディレクトリのコンテンツを表示するためにそれらのファイルが検索される順序を定義します。見つからず、自動インデックス機能が有効になっている場合は、ディレクトリの内容が一覧表示されます。
ただし、次のようにDirectoryIndex
の絶対パスを定義することもできます。
DirectoryIndex index.html /default/index.html
これで、ディレクトリにindex.htmlがない場合は、(DocumentRootに対して)/default/index.htmlの内容が使用されます。これは、まさにあなたが求めているものだと思います。
まず第一に: 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>