Câu trả lời:
Bạn có thể đặt các mã sau vào .htaccess
tệp của mình : -
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin/ [NC]
RewriteCond %{REMOTE_ADDR} !^1\.1\.1\.1
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ [R=302,L]
Địa 1.1.1.1
chỉ IP của bạn ở đâu
* Đối với dòng cuối cùng, đảm bảo rằng không có khoảng cách giữa http://
và %{HTTP_HOST}/
. StackExchange không cho phép mã http://%
được đăng nên tôi phải thêm một khoảng cách ở giữa.
Bội số được xử lý bằng cách thêm một dòng khớp
RewriteCond %{REQUEST_URI} ^/(index.php/)?admin(.*) [NC]
RewriteCond %{REMOTE_ADDR} !^10\.1\.1\.10
RewriteCond %{REMOTE_ADDR} !^10\.2\.1\.10
RewriteRule .* - [F,L]
Về cơ bản, nó chuyển thành nếu regex url này chứ không phải các địa chỉ này, sau đó 403, bạn sẽ ra khỏi đây.
F
thì L
được ngụ ý. httpd.apache.org/docs/2.4/rewrite/flags.html . "Khi sử dụng [F], [L] được ngụ ý - nghĩa là, phản hồi được trả về ngay lập tức và không có quy tắc nào được đánh giá thêm."
Bạn cũng có thể thiết lập quy tắc "cho phép từ" trong cấu hình httpd cho các tệp máy chủ ảo. Tôi cũng sẽ thay đổi URL quản trị viên để bảo mật bổ sung (loại dự phòng ok với "cho phép từ" nhưng vành đai và niềng răng).
Trong tập tin conf tôi làm một cái gì đó như thế này:
<Location /index.php/mynewadminname>
Order deny,allow
deny from all
#home
allow from 1.2.3.4
#office
allow from 5.6.7.8
</Location>
<Location /mynewadminname>
Order deny,allow
deny from all
#home
allow from 1.2.3.4
#office
allow from 5.6.7.8
</Location>
Trong đó 1.2.3.4 và 5.6.7.8 là hai địa chỉ IP được phép. Có thể là một sự thay thế.