web-dev-qa-db-ja.com

.htaccessでmp4およびpngファイルの権限を設定する

まず、私はApache.htaccessを初めて使用します。ユーザーがmp4ファイルとpngファイルにのみ飛び込むことを許可する必要があるサーバーがあります。だから、私はApache HTTPサーバーのドキュメントを読んでいて、それが言っていることによると、これを私の.htaccessに追加しました:

<filesMatch "\.(png|mp4)$">
Order Allow,Deny
Allow from all
</filesMatch>

なぜなら、私が理解している限り、これは「すべてのファイルについて、拡張子がpngまたはmp4の場合は、誰でも取得できるようにする。それ以外の場合はアクセスを拒否する」という意味です。明らかに、私は間違っています、なぜならこれはファイル/フォルダへのアクセスを禁止しますとにかく、フォルダとhtmlファイル(そしてもちろんpngファイルとmp4ファイル)にアクセスできます。では、pngファイルとmp4ファイルへのアクセスのみを許可するにはどうすればよいでしょうか。また、大文字と小文字を区別しないようにフィルターを作成する方法を知りたいです。

ありがとう。

編集:最初-ローカルホストにすべてへのアクセスを許可する必要があることを忘れました(つまり、拒否はローカルホスト以外の場合のみである必要があります)。これがデフォルトの動作なのか、それとも何らかの形で示す必要があるのか​​、私にはよくわかりません。また、テストを行ったときにファイルが破損していたため、常にすべてに「禁止されたアクセス」が発生していました。投稿を更新しました。

最終的に解決策を見つけることができました:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
<filesMatch "\.(?i:png|mp4)$">  
Order Allow,Deny
Allow from all
</filesMatch>

これで、「デフォルトでは、すべてへのアクセスを禁止します。ファイルがPNGまたはMP4タイプの場合(はい、?i:大文字と小文字を区別しない)、どこからでもアクセスを許可します。

.htaccessが実際に考慮されるように、httpd.confのすべてのAllowOverrideNoneエントリをAllowOverrideAllにオーバーライドする必要があることに注意してください(以前は無視されていました)。

試してみてください

Order Allow,Deny
<filesMatch "\.(?i:png|mp4)$">  
    Allow from all
</filesMatch>

?i:部分では、大文字と小文字を区別しない一致を許可する必要があります。FilesMatchの外部で順序を指定すると、明示的に許可されていないすべてのものが拒否されます。

2
Sven