このようにディレクトリ一覧を無効にしました...
Options -Indexes
私がこのようなディレクトリにアクセスしようとすると:-
www.example.com/secret/
403 Forbiddenの応答が返されます。
ただし、404 Not Found応答が必要なので、ハッカーは私のディレクトリ構造を簡単に推測できません。どうすればいいですか?
/ secretでmod_rewriteとAllowOverrideを有効にします。次に.htaccessを作成します。
RewriteEngine On
RewriteBase /secret
RewriteRule ^$ - [R=404,L]
私は同様の問題に対する答えを求めてインターネットを見回しました。 mod_rewriteは可能な解決策ですが、最善の解決策は "RedirectMatch"ディレクティブを使用することです。
を参照してくださいStackOverflow:403 Forbiddenから404 Not Foundへのリダイレクトの問題
代わりに404エラーを返すカスタム403スクリプトを作成します。
たとえば、PHPの場合:
<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>
次に、403の結果に対してこのスクリプトを使用するようにApacheを構成します。
ErrorDocument 403 /403.php
書き換えをいじる必要はなく、サーバー全体で即座に機能します。
ディレクトリのコンテンツをリストとして表示することを停止し、404エラーを表示する私の解決策は簡単です。プロジェクトのルートディレクトリに.htaccessファイルを作成し、保護するディレクトリを記述します。
ディレクトリ構造
- your_root_directory
- .htaccess
- 404.html
- index.html
- app
- other files I do not want to show
- models
- other files I do not want to show
.htaccess
RewriteEngine On
RewriteRule ^app/ - [R=404,L]
RewriteRule ^models/ - [R=404,L]
ErrorDocument 404 /your_root_directory/404.html
.htaccessの2行目は、アプリディレクトリとそのすべてのサブディレクトリ内のリストアイテムへのアクセスを許可しません。
.htaccessの3行目は、modelsディレクトリとそのすべてのサブディレクトリ内のリストアイテムへのアクセスを許可しません。
.htaccess行の4番目は、独自の404エラーを設定します(Apacheのデフォルトエラーを表示したくない場合)。
Htaccessを使用する場合は、ブラウザのキャッシュをクリアしてください。