Sau khi đã tìm hiểu về robots.txt
và wp-config.php
, file .htaccess
là mảnh ghép tiếp theo trong bộ ba tối ưu website WordPress ở cấp độ server. File này cực kỳ mạnh mẽ, cho phép bạn điều khiển cách web server (Apache) tương tác với website của bạn, từ chuyển hướng URL đến bảo mật và tối ưu hiệu suất.
Giống như wp-config.php
, luôn luôn sao lưu file .htaccess
trước khi thực hiện bất kỳ thay đổi nào! Một lỗi nhỏ có thể khiến website của bạn không thể truy cập được.
Hướng Dẫn Tối Ưu File .htaccess
để Bảo Mật WordPress
File .htaccess
Nằm Ở Đâu?
File .htaccess
cũng nằm ở thư mục gốc của cài đặt WordPress của bạn, cùng cấp với wp-config.php
và thư mục wp-content
. Nếu bạn không thấy nó, có thể nó bị ẩn (vì là file hệ thống bắt đầu bằng dấu chấm) hoặc chưa được tạo. WordPress sẽ tự động tạo file này khi bạn cài đặt permalinks (Đường dẫn tĩnh) lần đầu tiên.
Cấu Trúc Cơ Bản của .htaccess
trong WordPress
Một file .htaccess
tiêu chuẩn của WordPress trông như thế này:
Apache
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Không chạm vào các dòng giữa # BEGIN WordPress
và # END WordPress
trừ khi bạn biết chính xác mình đang làm gì. Đây là cấu hình mặc định để permalinks của WordPress hoạt động. Bạn sẽ thêm các quy tắc bảo mật của mình bên ngoài khối này, thường là trước dòng # BEGIN WordPress
.
Các Quy Tắc Bảo Mật .htaccess
Quan Trọng
Dưới đây là các quy tắc bạn có thể thêm vào file .htaccess
để tăng cường bảo mật cho website WordPress của mình:
1. Bảo Vệ File wp-config.php
Đây là file quan trọng nhất của WordPress, chứa thông tin kết nối database nhạy cảm. Bạn nên ngăn chặn mọi truy cập trực tiếp vào file này từ trình duyệt.
Apache
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
Giải thích: Quy tắc này chặn mọi yêu cầu truy cập trực tiếp vào wp-config.php
từ bất kỳ địa chỉ IP nào.
2. Vô Hiệu Hóa Duyệt Thư Mục (Directory Browse)
Nếu không có file index.php
hoặc index.html
trong một thư mục, server có thể hiển thị danh sách tất cả các file trong thư mục đó. Điều này có thể tiết lộ cấu trúc file và thông tin nhạy cảm cho kẻ tấn công.
Apache
Options -Indexes
Giải thích: Dòng này sẽ vô hiệu hóa chức năng hiển thị danh sách thư mục cho toàn bộ website.
3. Bảo Vệ File .htaccess
Chính Nó
Mặc dù hiếm khi bị tấn công trực tiếp, bạn có thể thêm một lớp bảo vệ cho chính file .htaccess
.
Apache
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
Giải thích: Tương tự như wp-config.php
, quy tắc này ngăn chặn truy cập trực tiếp vào file .htaccess
.
4. Vô Hiệu Hóa Thực Thi PHP trong Một Số Thư Mục
Các thư mục như wp-content/uploads/
thường chỉ chứa ảnh, video và các file media khác. Kẻ tấn công có thể cố gắng tải lên mã độc PHP vào đây. Bằng cách vô hiệu hóa thực thi PHP trong thư mục này, bạn có thể ngăn chặn mã độc đó chạy.
Cách thực hiện: Tạo một file .htaccess
mới bên trong thư mục wp-content/uploads/
(chứ không phải thư mục gốc) và thêm vào đó nội dung sau:
Apache
# Deny access to all files except common image/media types
<FilesMatch "\.(php|phtml|php\d|phps|cgi|pl|py|asp|aspx)$">
Order allow,deny
Deny from all
</FilesMatch>
Giải thích: Quy tắc này chặn mọi yêu cầu thực thi các loại file script (PHP, CGI, ASP, v.v.) trong thư mục uploads
.
5. Chặn Truy Cập vào XML-RPC (Nếu không sử dụng)
File xmlrpc.php
thường là mục tiêu của các cuộc tấn công Brute-force hoặc DDoS. Nếu bạn không sử dụng tính năng này (ví dụ: không đăng bài từ xa bằng ứng dụng di động hoặc không dùng Jetpack), bạn nên chặn nó.
Apache
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
Giải thích: Chặn mọi yêu cầu truy cập vào xmlrpc.php
. Lưu ý: Nếu bạn dùng Jetpack hoặc các ứng dụng/plugin khác dựa vào XML-RPC, việc chặn này có thể gây lỗi.
6. Chặn Tác Giả Có Tên Người Dùng Đáng Ngờ (Author Scan)
Kẻ tấn công thường cố gắng tìm tên người dùng bằng cách truy cập các URL tác giả (ví dụ: yourdomain.com/?author=1
). Quy tắc này sẽ chuyển hướng các yêu cầu đó đến trang chủ hoặc một trang khác, giúp che giấu tên người dùng.
Apache
# Block author scans
RewriteEngine On
RewriteCond %{QUERY_STRING} author=(\d*)
RewriteRule .* - [F]
Giải thích: Nếu URL chứa author=
và một số, quy tắc này sẽ trả về lỗi Forbidden
(403).
7. Chặn Truy Cập từ IP Cụ Thể (Nếu bị tấn công)
Nếu bạn phát hiện một địa chỉ IP cụ thể đang cố gắng tấn công website của bạn, bạn có thể chặn nó.
Apache
<Limit GET POST>
Order Allow,Deny
Deny from 192.168.1.100 # Thay thế bằng địa chỉ IP cần chặn
Allow from all
</Limit>
Giải thích: Chặn mọi yêu cầu GET/POST từ địa chỉ IP đã cho. Bạn có thể liệt kê nhiều IP.
Ví Dụ File .htaccess
Hoàn Chỉnh (Sau khi thêm các quy tắc bảo mật)
Apache
# BEGIN Custom Security Rules (Thêm các quy tắc bảo mật của bạn ở đây)
# 1. Bảo vệ file wp-config.php
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
# 2. Vô hiệu hóa duyệt thư mục
Options -Indexes
# 3. Bảo vệ file .htaccess chính nó
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
# 4. Chặn truy cập vào XML-RPC (Chỉ khi bạn không sử dụng)
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
# 5. Chặn tác giả có tên người dùng đáng ngờ (Author Scan)
RewriteEngine On
RewriteCond %{QUERY_STRING} author=(\d*)
RewriteRule .* - [F]
# END Custom Security Rules
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Lưu ý quan trọng: Quy tắc vô hiệu hóa thực thi PHP trong uploads
phải được đặt trong một file .htaccess
riêng bên trong thư mục wp-content/uploads/
.
Lời Khuyên Quan Trọng Khi Chỉnh Sửa .htaccess
:
- Sao lưu, sao lưu, sao lưu! Điều này không bao giờ là thừa.
- Thử nghiệm từng thay đổi một: Sau khi thêm một quy tắc, lưu file và kiểm tra ngay lập tức website của bạn (cả frontend và backend) để đảm bảo không có lỗi xảy ra.
- Tránh các quy tắc phức tạp nếu không hiểu:
.htaccess
rất mạnh nhưng cũng rất dễ gây lỗi nếu không được cấu hình đúng. Nếu bạn không chắc chắn, hãy tìm kiếm sự giúp đỡ từ nhà phát triển hoặc chuyên gia. - Đôi khi plugin bảo mật tốt hơn: Nhiều plugin bảo mật WordPress (như Wordfence, iThemes Security, Sucuri Security) có thể tự động thêm các quy tắc
.htaccess
phức tạp và hiệu quả hơn mà không yêu cầu bạn phải tự chỉnh sửa thủ công. - Server Nginx không dùng
.htaccess
: Nếu hosting của bạn sử dụng web server Nginx (thay vì Apache),.htaccess
sẽ không hoạt động. Các cấu hình tương tự phải được thực hiện trong file cấu hình Nginx của server, và bạn sẽ cần sự hỗ trợ từ nhà cung cấp hosting. FastPanel có thể sử dụng Nginx.
Việc tối ưu .htaccess
là một phần quan trọng để củng cố “bức tường” bảo mật cho website WordPress của bạn. Hãy thực hiện cẩn thận và kiểm tra kỹ lưỡng sau mỗi bước nhé!