.htaccessファイルと.htpasswdファイルを使用して、ユーザー名とパスワードの組み合わせでディレクトリを保護することはできるが、その中のファイルを保護することはできないのかと思っていました。つまり、そのディレクトリ内の画像を友達にリンクすることはできますが、ユーザー名/パスワードなしではディレクトリ自体の閲覧は許可されません。よろしくお願いします。
.htaccessファイルと.htpasswdファイルを使用して、ユーザー名とパスワードの組み合わせでディレクトリを保護することはできるが、その中のファイルを保護することはできないのかと思っていました。つまり、そのディレクトリ内の画像を友達にリンクすることはできますが、ユーザー名/パスワードなしではディレクトリ自体の閲覧は許可されません。よろしくお願いします。
回答:
あなたのこれを試してください.htaccess:
Require valid-user
<Files ?*>
Order allow,deny
Allow from all
Satisfy any
</Files>
ここでRequire valid-userは、既知のログインが必要です。次に、名前に1文字以上のファイルに対するこの制限を修正します。これは?*、<Files>セクションのglobパターンが一致するものです。これは、囲まれたルールがファイルに適用されますが、ディレクトリには適用されないことを意味します。
修正されたファイルのルールでは、キーはSatisfy anyです。これにより、認証情報または IPアドレスのいずれかで承認を行うことができます。次に、任意の IPアドレスの通過を許可するため、リクエストは常に承認されます。
したがって、このディレクトリまたはそのサブディレクトリを参照するにはログインが必要になりますが、そこから直接ファイルを取得する必要はありません。
あなたが欲しかったのはそれです。
LocationMatchauthをディレクトリインデックスに制限するために使用します。
LocationMatch。正規表現が必要です。b)もちろんrequire valid-user、LocationMatchブロックの内側に配置する必要があります(Limitとにかくなぜ声明なのですか?)
フォルダーのインデックスであるApacheの表示をオフにするだけです。これを.htaccessに入れます:
Options -Indexes
このようにして、ユーザーがにアクセスhttp://www.url.com/folder/すると、ディレクトリリスト拒否エラーが表示されます。しかし、彼らが訪問するhttp://www.url.com/folder/file.jpgと、ファイルを見ることができます。