2011-02-13 91 views
2

我的谷歌福失敗了我就這一個...限制文件類型訪問目錄

我試圖創建一個Apache的配置,將只允許訪問圖像,JS和CSS文件在特定的目錄中。

例如,下面的URL應該工作:

mysite.com/dir/image.gif

但是這應該被阻止:

mysite.com/dir/page.php

我正在努力的部分是讓它只爲/ dir /工作。/dir /之外的其他目錄不應受此指令影響。

這是我到目前爲止,這不是我所需要的(它似乎適用於所有目錄)。

<FilesMatch "\.(gif|jpe?g|jpg|png|js|css)$"> 
    Order deny,allow 
    Allow from all 
</FilesMatch> 

如何僅允許訪問/ dir /中的某些文件類型,但不影響我的其餘目錄?

回答

2

爲簡單起見,我這樣做的時候,我通常把所有的媒體文件,在自己的目錄。但是,如果這不是一個選項,您可以嘗試FilesMatch指令:

http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch

你可以把FilesMatch的目錄裏面。

+0

你的意思是這樣的嗎?它似乎並不奏效:<目錄/ DIR> 訂單拒絕,允許 所有 允許爲了否認,允許 所有 – Fook 2011-02-13 16:40:19

0

我通常使用mod_rewrite爲

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} ^/my_dir/[^/]+\.php$ 
RewriteRule .* - [F] 
4

我最近使用這個:

Options -ExecCGI -Indexes 
<FilesMatch "\.*$"> 
deny from all 
</FilesMatch> 
<FilesMatch "\.(png|jpg|gif|css)$"> 
allow from all 
</FilesMatch> 

我找不到這個明確的文檔,但對於FilesMatch看來Apache不短路,在第一場比賽。它處理整個.htaccess規則。

因此,第一條規則阻止訪問所有文件類型,第二條規則允許選擇的類型。

可能需要更多的測試,但必須爲客戶做些事情,這些客戶很容易實現它們的開發人員正在努力解決的Web漏洞。