Cách xóa mật khẩu bảo vệ .htaccess khỏi thư mục con


97

Tôi đã sử dụng mật khẩu bảo vệ toàn bộ trang web của mình .htaccessnhưng tôi muốn để lộ một trong các thư mục con để có thể xem mà không cần mật khẩu.

Làm cách nào để tắt tính năng bảo vệ bằng mật khẩu htaccess cho một thư mục con? Cụ thể .htaccesscú pháp là gì .

Đây là .htaccesstệp của tôi được đặt trong thư mục gốc của ftp của tôi.

AuthName "Quản trị viên trang web"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName an toàn
AuthType Basic
yêu cầu tên người dùng1
lệnh cho phép, từ chối
cho phép từ tất cả

4
Điều này có thể phù hợp hơn cho serverfault.
beggs 16/09/09

Câu trả lời:


154

Bạn cần tạo một .htaccesstệp mới trong thư mục bắt buộc và bao gồm Satisfy anychỉ thị trong đó như vậy, cho tối đa Apache 2.3:

# allows any user to see this directory
Satisfy Any

Cú pháp đã thay đổi trong Apache 2.4, điều này có tác dụng tương tự:

Require all granted

7
Tôi chỉ có thể làm cho điều này để làm việc với Allow from allkhông Satisfy Any.
Jess Telford

@JessTelford sử dụng tốt đoạn mã. @RageZ +1 cho câu trả lời phù hợp với tôi. Bạn có thể chỉnh sửa câu trả lời để siêu đơn giản và đăng nó bằng phương pháp đoạn mã. Nếu một người nào đó sẽ phải suy nghĩthanks
Jesse Burcsik

2
@JessTelford Satisfy Anyđang hoạt động và nó bị viết sai chính tả thành Satisify Any. Có thể đó là lý do nó không hoạt động cho bạn.
BlueBird

1
Tôi cần phải có tập tin duy nhất không được bảo vệ (mọi thứ khác được bảo vệ), được thực hiện như nhau trong <Files> phần
Nick

Điều này không hiệu quả với tôi - Tôi vẫn nhận được mật khẩu yêu cầu tên người dùng và pwd .. Sử dụng firefox & windows 7 ... Có ai có ý kiến ​​gì không?
ItsMeDom

36

Thêm vào câu trả lời của RageZ, tôi đã sử dụng câu trả lời này trong Hướng dẫn máy chủ:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Tuyệt vời. Cảm ơn RageZ!


9

Chỉ cần tạo mới .htaccesstrong thư mục con mong muốn với chỉ thị này:

Allow from all

Bạn chỉ có thể hạn chế IP của mình với:

Allow from x.x.x.x

Xem: http://httpd.apache.org/docs/current/mod/mod_access_compat.html


Nó hoạt động khi tôi đặt "Yêu cầu tất cả được cấp" thay vì "Cho phép từ tất cả" và "Thỏa mãn bất kỳ". Hai cái đó không phù hợp với tôi. Tôi đang sử dụng Apache 2.4.
endo64

1

Bạn cần thêm một tệp .htaccess khác vào thư mục con ghi đè xác thực. .htaccess xếp tầng lên trên, tức là nó sẽ tìm trong thư mục hiện tại, sau đó tăng lên một cấp, v.v.


4
bạn có tình cờ biết cú pháp không? Tôi hiểu khái niệm nhưng không biết làm thế nào để thực hiện nó.
justinl 16/09/09

Nếu bạn muốn xóa tệp hiện tại và không sử dụng quyền, chỉ cần thay thế nó bằng một tệp trống có tên .htaccess
Gaʀʀʏ

3
@Garry đó không phải là cách xếp tầng .htaccess hoạt động, bạn phải ghi đè rõ ràng các tùy chọn.
William Denniss

1

Đây là một cách để cho phép thư mục con "foo" thông qua xác thực cơ bản từ tệp .htaccess chính trên một trang web:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Lưu ý: Điều này hoạt động trong Apache 2.4. Tôi đã không xác nhận cho các phiên bản trước đó.


0

Nếu bạn muốn ngăn bất kỳ trực tiếp cụ thể nào khỏi xác thực htaccess thì bạn có thể sử dụng mã sau trong tệp htaccess của mình ở trên cùng.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Ngoài ra Nếu bạn muốn ngăn nhiều thư mục thì hãy thêm

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

càng nhiều thời gian càng nhiều thư mục, bạn muốn xóa khỏi chương trình ngăn chặn htaccess.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.