2

Webサーバーに公的にアクセス可能なファイルがあります。AutoIndexing(Options + Indexes)を有効にしたいのですが、これらのリストを表示するにはパスワードが必要です。Authの設定に問題はありませんが、パブリックファイルとDirectoryIndexファイルには問題があり、誰かがディレクトリを要求し、DirectoryIndexファイルがある場合は、このためのパスワードを入力する必要はありません。セキュリティ上の理由から、AutoIndexingのみがパスワードを要求する必要があります。

これが私が思いついたものです:

Options +Indexes
Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.php -f
RewriteRule ^.*$ %{REQUEST_URI}index.php [R,NE,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.html -f
RewriteRule ^.*$ %{REQUEST_URI}index.html [R,NE,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.htm -f
RewriteRule ^.*$ %{REQUEST_URI}index.htm [R,NE,L]

<FilesMatch "^$">
AuthName "My Auth Name"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user
</FilesMatch>

FilesMatchビットは正常に機能します。ディレクトリの要求はすべてログインするように求められますが、通常のファイルは通過します。これは簡単なことです。難しいのは、ログインせずにDirectoryIndexesをレンダリングすることです。上部の書き換えは、認証を要求する前にリクエストをリダイレクトしようとして失敗したことですが、サイコロはありません。最初に認証を要求します。何。

私はこれについて約6時間の調査を行いましたが、この時点で私はあきらめようとしています。どんな助けでもいただければ幸いです。

編集:これはディレクトリ構造の例です。

/images/blah.jpg   <- does not require a password
/images/           <- requires a password to view listing
/index.html        <- does not require a password
/                  <- does not require a password because a DirectoryIndex file exists (index.html)
4

2 に答える 2

0

ブロックを削除して、<FilesMatch>要求しているディレクトリだけでなく、すべての要求に適用します。

Options +Indexes +FollowSymLinks

RewriteEngine On
…

AuthName "My Auth Name"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user

編集    許可したいディレクトリのインデックス作成を有効にしないのはなぜですか?

于 2009-10-01T09:25:04.863 に答える
0

私はこれが重大であることを知っていますが、そこにいる誰かをグーグルで検索するのに役立つことを願っています(私自身など-私はこのすべてのhtaccessのものにまったく慣れていません)。

私が思うに、もっと単純ではありますが、同様のことをしたかった-ディレクトリにアクセスするときにApache autoindexを引き続き使用したかったが、パスワードで保護したかった(私自身の利益のために完全に無効にするのではなく)-同時に、直接リンクされている場合、ファイルに自由にアクセスできるため、ユーザー名とパスワードを必要とせずにファイルにアクセスできます。

インターネット上で広く見られる基本的な「ディレクトリにパスワードを設定する」トリックは次のとおりです。

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user

require 属性の範囲を制限する単純な追加により、私が求めていたことが達成されました。

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
<Files "">
require valid-user
</Files>

インデックス ファイルのないディレクトリにアクセスしようとすると (自動インデックスが作成されます)、ユーザー名とパスワードを入力する必要があります。

インデックス ファイルを含むディレクトリにアクセスしようとすると、通常どおり読み込まれます。u/p は必要ありません。

ファイルに直接アクセスしようとすると、上記のように通常どおりロードされ、u/p は必要ありません。

おそらく予想通り、すべてのサブフォルダーに同様に影響します。

これまでのテストに基づいて、このように動作し、正常に動作するようです。

于 2012-12-24T14:49:50.563 に答える