2011-12-30 57 views
45

我最近清理我的項目。我在根目錄下和另外6人主要的.htaccess。其中5人跑到Options -Indexes,我沒有看到任何允許查看目錄所以anypoint感動,到主之一。所以現在我只有2個.htaccess文件。主要的,一個在/system持有htaccess的<Directory>拒絕來自所有

# Block External Access 
deny from all 

,所以我想在/system運行,只有從內部爲主。所以我刪除了/系統中的一個,並添加了

# Block External Access 
<Directory "/system/"> 
deny from all 
</Directory> 

我的主要.htaccess文件離開1!

,但現在我得到一個

內部服務器錯誤

服務器遇到一個內部錯誤或配置錯誤, 無法完成您的請求。

請聯繫服務器管理員,webmaster @ localhost和 通知他們錯誤發生的時間,以及您可能已經完成的任何可能導致錯誤的任何事情。

這個錯誤的詳細信息可在服務器錯誤 日誌中。

的Apache/2.2.17(Ubuntu的)服務器在10.0.1.5端口80

的目標是阻止讀取/系統的任何文件和它的子目錄的,但讓一切都觀看從一個.htaccess整個項目的文件。任何想法如何我可以解決這個問題?我做了一些谷歌搜索,但不能真正拿出任何東西。

回答

74

在.htaccess你不能使用Directory directive。不過,如果你在/ system目錄下.htaccess文件並將其放置在它下面,你會得到相同的結果

#place this in /system/.htaccess as you had before 
deny from all 
+3

是的。我之前有一個.htaccess放置在/ system中。只是想爲整個項目只有一個。猜猜我不能,也不得不這樣做。 – Keverw 2011-12-30 20:35:16

+0

對於Windows用戶,請確保您將文件名保存爲'.htaccess',並將其保存爲某文本編輯器中的文件,因爲Windows資源管理器不允許您刪除文件名。這對我來說是一個問題 – 2016-08-19 20:02:41

1

您可以從根目錄下使用:

RewriteEngine On 
RewriteRule ^(?:system)\b.* /403.html 

或者:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden'); 
9

您還可以使用RedirectMatch指令來拒絕對文件夾的訪問。

要拒絕訪問的文件夾,您可以使用以下RedirectMatch htaccess的:

RedirectMatch 403 ^/folder/?$ 

這將禁止到/文件夾/ EG外部訪問:http://example.com/folder/會返回一個403 Forbidden錯誤。

要拒絕訪問該文件夾內的所有內容,您可以使用此:

RedirectMatch 403 ^/folder/.*$ 

這將阻止訪問整個文件夾如:http://example.com/folder/anyURI將返回403錯誤響應客戶。