2011-06-05 91 views
0

我有這種情況:htaccess的保護所有子文件夾和文件

/storage 
    index.php 
    other scripts.php 
    /files 
    -files and folders- 

我想拒絕所有的HTTP請求中的所有文件和/files子文件夾,但同時允許訪問/storage和運行的PHP腳本。我嘗試了一些規則,但它們或者只保護文件列表,或者不允許訪問所有/storage文件夾。

.htaccess必須在/files之外(因爲此文件夾訪問PHP readfile.htaccess可能是可訪問的)。

回答

0

我覺得這樣的事情,在父目錄(您可能需要使用的完整路徑)

<Directory ./Files> 
    ORDER DENY, ALLOW 
    DENY FROM ALL 
</DIRECTORY> 

一般我會建議更換,你只需把你的/ files目錄某處文檔根目錄以外爲了安全。這樣,如果.htaccess意外關閉或破壞,你不會暴露這些文件。

編輯:

我的道歉,該<Directory>指令只在服務器配置(你需要把它放在httpd.conf文件或同等學歷),而不是在.htaccess中無效。如果您確定將要在目錄中放置的文件類型,則可以使用<Files>指令以及各種文件類型:http://httpd.apache.org/docs/current/mod/core.html#files但是這需要放在Files目錄中。 (然後可能只是從PHP腳本中排除它,儘管許多人已經忽略了隱藏文件)。

+0

我收到500個錯誤 – 2011-06-06 00:03:35

+0

我的歉意,我已經添加了更新。 – preinheimer 2011-06-06 00:14:15

6

在你的根.htaccess文件/storage目錄下,即把這個行:

RewriteRule ^files/ - [R=404,L,NC] 

這將引發404到所有東西的HTTP請求下files/子目錄,而你.php文件就能包含文件在files/子目錄下。

+0

它不起作用我仍然可以訪問這些文件,例如/files/image.jpg可見 – 2011-06-07 00:27:36

+0

您的.htaccess正被讀取嗎?在發佈之前,我已經在我的Linux,Mac和XAMPP安裝上測試了上述規則,並且它在任何地方都可以使用。 – anubhava 2011-06-07 02:50:22

相關問題