2016-12-08 10 views
1

ディレクトリ "assets/output//"にあるすべてのファイル名へのアクセスを拒否しようとしています。意味「資産/出力/ 3342/45.jpg」は許可され、「assets/output/3342/orignal.jpg」は禁止されます。私は私のapache2 /サイト-avaliable/の.confに次のように挿入しようとしました。また

<Directory ^.*assets\/.*\/original.*\.*$> 
AllowOverride All 
order allow,deny 
deny from all 
</Directory> 

を、私は中/資産/ .htaccessファイルに似た配置しようとしました。残念ながら、私はREGEXを間違っているようです。明らかに、これはhttps://regex101.comに従って動作しますが、実際には実際には機能しません。提案?ありがとうございました。

+0

「ディレクトリ」が許可されていない場合、なぜそれを '.htaccess'としてタグ付けしましたか? – anubhava

+0

私は.htaccessを使っていろいろなソリューションを試していました。ヒントありがとうございます。 – mrheroux

答えて

1

DirectoryまたはLocationの指示は.htaccessには許可されません。あなたが共有ホスティングであるとApache /バーチャルホストの設定の変更を行うことができないならば、あなたは、Apacheの設定と.htaccess両方から働くルールの上assets/output/.*/original

RewriteEngine On 

# comment below line if you want to block all URIs not just existing files 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^/?assets/output/.*/original(\..*)?$ - [F,NC] 

へのアクセスをブロックするために、このルールを使用することができます。アクセスが必要な場合は、Apacheの設定を優先してください。

+1

それは働いた。これは私を踏みにじっていた。ありがとうございました! :-) – mrheroux

+1

他の人にはこちら - 私はこれを/etc/apache2/sites-avaliable/*.confに置き、サーバーを再起動しました。 – mrheroux

0

ここでは論理的な問題があります。 <Directory ...>ディレクティブの場合は、正規表現ではなく、のパスが引数として必要です。あなたは、このような文脈での正規表現を使用することができますが、あなたはチルダ(~)でそれを付加することによってので HTTP Serverを伝えるにあります

<Directory ~ "^/.*assets/.*/$"> 
    RewriteEngine on 
    RewriteRule "^/.*assets/.*/original" "-" [F] 
</Directory> 

文書化されている:http://httpd.apache.org/docs/current/mod/core.html#directory

+0

動作しませんでした。私も考えている、私はディレクトリの代わりにを使用する必要がありますか? – mrheroux

+0

申し訳ありませんが、私のせいで、私は詳細を実際に見ていませんでした。 'Directory'ディレクティブが本当に_folder_を参照するように、そして' RewriteRule'を内部に置いて特定のファイルへのアクセスを拒否するように、私は答えを修正しました。 – arkascha