ユーザーがログインする前に、ディレクトリを非表示にする (代わりに 404 を指定する) 方法を探しています。
たとえば、ディレクトリ/admin
とディレクトリがあります/login
そして、最初のアドレスにアクセスしたユーザーに 404 ページが表示されるようにします。
しかし、最初に 2 ページ目に移動すると、基本的な認証ダイアログが表示され、正しいログイン データを入力すると、最初のディレクトリにリダイレクトされ、実際の管理パネルが表示されます。
これを行う方法を教えてください。さまざまな組み合わせ(シンボリックリンクを含む)を試しましたが、取得できる/admin
のは、パスワードで保護されている場合はアクセス可能なディレクトリだけです(そうでない場合は、RewriteRuleまたはRedirectMatchに関係なく、404に正しくリダイレクトされます)。
RedirectMatch 404 ^/admin(/?|/.*)$
RewriteRule .* - [E=AUTH:%{HTTP:Authorization}]
<Files login>
AuthUserFile /www/.passwd
AuthName PROXY
AuthType Basic
Require valid-user
</Files>
RewriteCond %{AUTH} !=""
RewriteRule .* login
動作していません (継続的に 404 を取得)。
RedirectMatch 404 ^/admin(/?|/.*)$
RewriteRule ^login/(.*) admin/$1
RewriteCond %{THE_REQUEST} ^GET\ /admin/
RewriteRule ^admin/(.*) /login/$1 [L]
.htaccess が管理ディレクトリに存在する間は機能しません (存在しない場合は保護されなくなります)。