2011-12-30 29 views
45

Gần đây tôi đã dọn dẹp dự án của mình. Tôi có một .htaccess chính trong thư mục gốc và 6 thư mục khác. 5 người trong số họ đã chạy Options -Indexes mà tôi không thấy bất kỳ điểm nào cho phép bất kỳ thư mục nào được xem để di chuyển đến trang chính. vì vậy bây giờ tôi chỉ có 2 tệp .htaccess. chính và một ở /system nắm giữhtaccess <Directory> từ chối tất cả

# Block External Access 
deny from all 

Vì vậy, tôi muốn chạy mà trên /system chỉ từ bên trong chính. Vì vậy, tôi đã xóa một trong/hệ thống và thêm

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

vào tệp .htaccess chính của tôi để lại 1!

nhưng bây giờ tôi nhận được một

nội Server Error

Máy chủ gặp phải lỗi nội bộ hay sai và đã không thể hoàn thành yêu cầu của bạn.

Vui lòng liên hệ với quản trị viên máy chủ, quản trị viên web @ localhost và thông báo cho họ về thời gian xảy ra lỗi và bất kỳ điều gì bạn có thể đã gây ra lỗi.

Thông tin thêm về lỗi này có thể có sẵn trong lỗi máy chủ nhật ký.

Apache/2.2.17 (Ubuntu) Server tại 10.0.1.5 Cảng 80

Mục đích là để ngăn chặn đọc bất kỳ tập tin trong/hệ thống và nó phụ thư mục, nhưng cho phép xem mọi thứ khác tất cả từ một .htaccess tệp cho toàn bộ dự án. Bất kỳ ý tưởng về cách tôi có thể sửa lỗi này? Tôi đã thực hiện một số tìm kiếm trên Google nhưng thực sự không thể tìm ra bất kỳ thứ gì.

Trả lời

74

Bạn không thể sử dụng Directory directive bằng .htaccess. Tuy nhiên, nếu bạn tạo một file .htaccess trong thư mục/hệ thống và đặt dòng sau vào nó, bạn sẽ nhận được kết quả tương tự

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

Vâng. Tôi đã có một .htaccess đặt trong/hệ thống trước. Chỉ đang cố gắng để có duy nhất một cho toàn bộ dự án. Đoán tôi không thể và sẽ phải làm theo cách đó. – Keverw

+0

dành cho người dùng windows, đảm bảo bạn đặt tên tệp chính xác là '.htaccess' bằng cách lưu - dưới dạng tệp từ một số trình soạn thảo văn bản vì trình khám phá cửa sổ không cho phép bạn xóa tên tệp. đó là một vấn đề đối với tôi –

1

Bạn có thể sử dụng từ thư mục gốc:

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

Hoặc:

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

Bạn cũng có thể sử dụng chỉ thị RedirectMatch để từ chối truy cập vào thư mục.

Để từ chối truy cập vào một thư mục, bạn có thể sử dụng RedirectMatch sau trong .htaccess:

RedirectMatch 403 ^/folder/?$ 

này sẽ cấm một truy cập bên ngoài để/thư mục/ví dụ: http://example.com/folder/ sẽ trả về một lỗi cấm 403.

Để từ chối quyền truy cập vào tất cả mọi thứ bên trong thư mục, bạn có thể sử dụng này:

RedirectMatch 403 ^/folder/.*$ 

này sẽ chặn truy cập vào các thư mục toàn bộ ví dụ: http://example.com/folder/anyURI sẽ trả về một phản ứng 403 lỗi cho khách hàng.

Các vấn đề liên quan