Tôi đang làm việc trên một trang Wordpress và các trang của tôi đang sử dụng cấu trúc liên kết cố định mô tả chúng giống như các thư mục. Đối với một vài trang, tôi muốn sử dụng Xác thực cơ bản để mật khẩu bảo vệ một vài trang. Làm thế nào tôi sẽ viết này trong tập tin htaccess của tôi? Tôi có đang bảo vệ tệp hoặc địa chỉ viết lại không?.htaccess, mod_rewrite và xác thực cơ bản
Trả lời
Bạn sẽ không cần mod_rewrite cho điều này, hy vọng, điều này sẽ làm các trick:
SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true
SetEnvIfNoCase Request_URI ^/another/protected/path require_auth=true
# Auth stuff
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
Các mod_auth và các module mod_env nên có precidence qua mod_rewrite, vì vậy cấu trúc thư mục giả của bạn nên giữ nguyên . Bạn chỉ cần điền một số SetEnvIfNoCase Request_URI ^/some/path/to/protect require_auth=true
cho mỗi cái, sau đó điền vào phần còn lại của công cụ xác thực để phù hợp với nhu cầu của bạn.
Vâng, tôi không hoàn toàn hiểu tại sao điều đó lại xảy ra, nhưng ... điều đó đã xảy ra! Cảm ơn bạn rất nhiều! Tôi đã đổ mồ hôi trong nửa ngày! – Imaginary
@Imaginary Về cơ bản, nếu biến môi trường 'require_auth' là * not * set, không cần xác thực. Chỉ thị 'SetEnvIfNoCase' ở trên cùng đặt biến đó nếu yêu cầu là cho các thư mục nhất định (cho dù chúng tồn tại hay không). –
Tôi nghĩ rằng tôi đã có nó! Rất rõ ràng. Cảm ơn một lần nữa! – Imaginary
Vấn đề duy nhất tôi có với giải pháp này là việc nhấp vào nút hủy sẽ hiển thị trang được bảo vệ. Tôi đã cố gắng giải quyết vấn đề này bằng cách sử dụng:
RewriteCond %{REMOTE_USER} !user
RewriteRule ^/protected-page /unauthenticated-page [R=401]
Nhưng điều đó không hiệu quả. Tôi cung không chăc tại sao.
Để giải quyết vấn đề nhanh chóng và dơ bẩn tôi đã thêm
ErrorDocument 401 "You don't have access."
Để tạo một chuyển hướng tôi đã sử dụng này
ErrorDocument 401 '<html><head><meta http-equiv="refresh" content="0; url=/unauthenticated-page" /></head><body></body></html>'
Đối với những người đến đây với cùng một vấn đề như tôi, với .htaccess như thế này
AuthType Basic
AuthName "some_name"
AuthUserFile "/path/to/password/passwd"
require valid-user
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
quy tắc trên không hoạt động như tôi dự kiến (ủy quyền, sau đó viết lại)
vì chỉ sáp nhập trật tự ("Nếu" được sáp nhập cuối cùng)
nhờ comment from Alek đến điểm đó ra
vì vậy khi tôi loại bỏ dấu ngoặc IfModule, các quy tắc đã bắt đầu làm việc cho tôi.
- 1. "OR" Cờ trong mod_rewrite .htaccess
- 2. CORS và xác thực cơ bản HTTP
- 3. PHP và .htaccess giải pháp xác thực
- 4. Xác thực cơ bản và mẫu với cơ chế (Ruby)
- 5. .htaccess newbie issue sử dụng mod_rewrite
- 6. Wcf Xác thực cơ bản
- 7. Apache .htaccess - áp dụng xác thực cơ bản điều kiện dựa trên môi trường hoặc hostname
- 8. dừng .htaccess mod_rewrite trong một thư mục
- 9. CakePHP 2 Xác thực xác thực cơ bản
- 10. Python urllib2, xác thực HTTP cơ bản và tr.im
- 11. Xác thực cơ bản với yêu cầu jQuery.ajax và jsonp
- 12. Số xác thực cơ bản Tomcat
- 13. Xác thực cơ bản Với XMLHTTPRequest
- 14. Sử dụng xác thực Cơ bản và Xác thực Mẫu trên cùng một trang web
- 15. Trộn xác thực cơ bản và xác thực mẫu trong ASP.NET MVC3
- 16. Xác thực cơ bản bằng Flash
- 17. Xác thực HTTP cơ bản trong Go
- 18. CakePHP, CGI và mod_rewrite
- 19. mod_rewrite RewriteCond dựa trên sửa đổi lần cuối? (.htaccess)
- 20. Buộc https: // www. cho CodeIgniter trong htaccess với mod_rewrite
- 21. URL đẹp mà không có mod_rewrite, không có .htaccess
- 22. URL ngữ nghĩa cho các tệp HTML tĩnh có đuôi .htaccess và mod_rewrite
- 23. Sử dụng mod_rewrite và mod_alias (chuyển hướng 301) cùng nhau trong .htaccess?
- 24. Đặt lại bằng chứng xác thực cơ bản bằng AFNetworking
- 25. Yêu cầu HTTP có xác thực cơ bản
- 26. Cách xử lý Xác thực cơ bản trong WebView
- 27. Cuộc gọi JQuery Ajax với Xác thực cơ bản HTTP
- 28. Cách xử lý Xác thực cơ bản HTTP trong AVURLAsset?
- 29. Cách nhận mật khẩu từ xác thực cơ bản HTTP
- 30. Xác thực cơ bản IIS7 để bảo vệ trang web sử dụng xác thực mẫu
Điều duy nhất gần như thành công là tôi đã tạo một thư mục có tên giống với URL thân thiện (ví dụ/friendlyurl /) và đặt một tệp .htaccess trong đó yêu cầu xác thực. Đi đến trang, tôi đã được yêu cầu cho các thông tin đăng nhập và sau đó được gửi đến một lỗi 403 Cấm. – Imaginary