2017-02-07 1 views
0

セキュリティ上の理由から、特定の拡張子を除くすべてのファイルをブロックしたいと思います。 これは、.htaccessの次のエントリで行います。.htaccessホワイトリストファイル拡張子 - サブフォルダがブロックされています

<FilesMatch "\.(html|js|css|ico|php|jpg|jpeg|gif|png|xls|xlsx|pdf|doc|docx|ppt|pptx)$"> 
    Order Deny,Allow 
    Allow from all 
</FilesMatch> 

私の問題はhttp://mydomain/subfolder/などのサブフォルダへの定期的な要求も同様に今ブロックされていること、です。この要求には拡張子がないため、これはかなり理解できるものです。

これらは私の試みです:

^.*(\.html|\.js|\.css|\.ico|\.php|\.jpg|\.jpeg|\.gif|\.png|\.xls|\.xlsx|\.pdf|\.doc|\.docx|\.ppt|\.pptx)$ 

...(まだサブディレクトリを遮断する)

(\.(html|js|css|ico|php|jpg|jpeg|gif|png|xls|xlsx|pdf|doc|docx|ppt|pptx)?)$ 

...(何をブロックしません)

答えて

0

私が今できていますFilesMatchの2つのブロックを使用して問題を解決する:

Order Allow,Deny 
Deny from all 
<FilesMatch "\.(html|js|css|ico|php|jpg|jpeg|gif|png|xls|xlsx|pdf|doc|docx|ppt|pptx)$"> 
    Order Deny,Allow 
    Allow from all 
</FilesMatch> 
<FilesMatch "^(\/)?$"> 
    Order Deny,Allow 
    Allow from all 
</FilesMatch> 

編集: 残念ながら、サブフォルダにスラッシュがない場合、上記の解決策は失敗します。次のソリューションは現在、すべての私の要件を満たしているとはるかに短いです:

### whitelist file extension which may be served 
RewriteCond %{REQUEST_URI} !\.(html|js|css|ico|php|jpg|jpeg|gif|png|xls|xlsx|pdf|doc|docx|ppt|pptx)$ [nc] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule .* - [R=403,L] 

「-fは、」条件がファイルだけではなく、フォルダのためであることを意味しています。

+0

私はなぜ誰かが私の質問をd​​ownvoted ... – Gerfried

関連する問題