2012-01-02 33 views
11

Tôi có một thư mục được bảo vệ bởi htaccess. Đây là mã tôi sử dụng ngay bây giờ:Loại trừ một thư mục trong thư mục được bảo vệ htaccess

AuthName "Test Area" 
Require valid-user 
AuthUserFile "/***/.htpasswd" 
AuthType basic 

Điều này hoạt động tốt. Tuy nhiên, bây giờ tôi có một thư mục bên trong thư mục này mà tôi muốn cho phép bất cứ ai truy cập, nhưng tôi không chắc chắn làm thế nào để làm điều đó.

Tôi biết rằng chỉ có thể di chuyển các tệp ra ngoài thư mục được bảo vệ, nhưng để tạo một câu chuyện dài, thư mục cần nằm trong thư mục được bảo vệ, nhưng có thể truy cập được.

Làm cách nào để hạn chế quyền truy cập vào thư mục nhưng cho phép truy cập vào thư mục con?

Trả lời

11

Theo this article bạn có thể thực hiện việc này bằng cách sử dụng SetEnvIf. Bạn phù hợp với từng thư mục và tệp bạn muốn truy cập lớn và xác định biến môi trường 'cho phép' cho chúng. Sau đó, bạn thêm một điều kiện cho phép truy cập nếu biến môi trường này có mặt.

Bạn cần thêm các chỉ thị sau vào tệp .htaccess của mình.

SetEnvIf Request_URI "(path/to/directory/)$" allow 
SetEnvIf Request_URI "(path/to/file\.php)$" allow 
Order allow,deny 
Allow from env=allow 
Satisfy any 
+0

Nhờ sự giúp đỡ của bạn! –

+0

@SherwinFlight Tôi làm theo mã trên nhưng vẫn hỏi mật khẩu, cách loại trừ thư mục để tải lên hình ảnh – Nullpointer

+0

cảm ơn người đàn ông, vẫn đang làm việc. –

24

Chỉ cần tạo một file .htaccess trong thư mục con với nội dung:

Satisfy any

+3

Điều đó có thể hoạt động nhưng nếu không có thư mục vì công cụ 'mod_rewrite'. – janw

+0

Đặt điều đó trong khối Greg

0

Không cần để tạo ra một .htaccess trong thư mục con.

Chỉ cần tạo bao nhiêu biến như bạn cần với SetEnvIf chỉ thị, và chắc chắn các tập tin hoặc đường dẫn tên mà bạn muốn allw/từ chối là một phần của regex URI bạn vượt qua để SetEnvIf, giống hệt như @ Sumurai8 nói , nhưng đặt regex để phù hợp với nhu cầu của bạn, cho URI phải bắt đầu/kết thúc/chứa một tập hợp các ký tự ............

0

Câu trả lời được chấp nhận dường như không chạy tốt với Các phiên bản Apache, vì nó ngừng hoạt động ngay khi cập nhật Apache được triển khai trên một số máy chủ khách hàng của tôi.

Tôi khuyên bạn nên phương pháp sau:

AuthType Basic 
AuthName "NO PUBLIC ACCESS" 
AuthUserFile /xxx/.htpasswd 

SetEnvIf REQUEST_URI "(path/to/directory/)$" ALLOW 

<RequireAny> 
    Require env ALLOW 
    Require valid-user 
</RequireAny> 
Các vấn đề liên quan