2012-08-26 60 views
1

我已經爲別人創建了一個axtra ftp帳戶,所以他可以上傳文件(錦標賽結果,約20/30 htm文件和圖像) 我也很偏執,所以萬一他上傳「可能有危險」的文件,我不希望這些文件可以通過http請求訪問。在PHP的幫助下,我想獲取這些文件的內容。 (我不期望遇到麻煩)安全下載目錄與htaccess

問題: 我的主機不允許額外的ftp帳戶訪問public_html外部。 所以我認爲htacces應該解決我的問題。只是否定所有規則。 但用ftp acces這個htaccess文件可以被刪除或更改。

所以我試圖添加以下代碼在我的主htacces文件在我的網站的根目錄:

<Directory "/home/xxxx.nl/public_html/xxxxxxxx.nl/onzetoernooien/swissmaster_ftp"> 
deny from all 
</Directory> 

我的網站上掛着一個內部服務器錯誤。 我無法訪問httpd文件。

我的想法是在這個目錄上面使用htacces文件。 如果絕對路徑不正確,我可以使用某種通配符,如* swissmaster?

我在Apache網站上搜索過,但我迷失在壓倒性數量的信息。

在此先感謝您的幫助!

回答

1

不幸的是,您只能在服務器配置文件中使用.htaccess中的<Directory>部分。這會導致服務器錯誤(檢查你的錯誤日誌,你會看到錯誤信息)。由於FilesMatch僅檢查請求的URI的文件名部分,因此我們無法保護<Filesmatch "subdir/.*$">的子目錄。

你可以,但是,使用mod_rewrite,沿着這些線路:

RewriteEngine on 

RewriteRule ^subdir.*$ - [NC,F] 

如果請求的URI的正則表達式模式subdir.*(所以「子目錄」,其次是其他任何比賽,你可能需要調整的格局,因爲它很高興地捕捉到subdir_new/something.txt - 我相信你會明白),然後mod_rewrite的F flag將返回一個403 Forbidden狀態(NC代表No-Case,使模式不區分大小寫)。

+0

我確實添加了重寫規則,並且我的網站沒有關閉,但該目錄仍然可以訪問。所以我認爲我必須玩這個表達本身。我用swissmaster_ftp替換了subdir。 – Terradon

+0

Yesssssssssssssssssssssss! ^符號表示一個字符串的開始,所以當它被忽略時它就起作用了!現在我必須注意重複的名稱,否則這些名稱也無法訪問。謝謝你! – Terradon

+0

我很高興它工作:)。對於表達式,我會建議'^ full/path/to/subdir(/.*)? - 或者什麼都不要(要照顧索引),或者一個斜槓和零個或多個字符(索引,所有文件和嵌套目錄)。我認爲這會涵蓋所有問題。 –