Trong quá trình vận hành website, chắc chắn bạn sẽ gặp tình trạng bot spam, fake traffic, hoặc những request lạ liên tục “đập” vào server. Vấn đề này không chỉ gây tốn băng thông, giảm tốc độ website, mà còn khiến thống kê Analytics sai lệch, thậm chí bot xấu còn scan lỗ hổng bảo mật để tấn công trang.
Tin vui là bạn có thể chặn sạch những nguồn truy cập không mong muốn chỉ bằng vài đoạn code đơn giản trong WordPress. Bài này hướng dẫn 3 cách phổ biến nhất:
- Chặn IP
- Chặn User-Agent (trình duyệt / bot)
- Chặn quốc gia (Country)
Tất cả đều làm bằng code, rất phù hợp cho dân thích tối ưu WordPress bằng tay.
Vì sao cần chặn bot spam & fake traffic?
Bot xấu, traffic ảo gây nhiều hệ luỵ:
- Đốt băng thông, chiếm CPU, làm web chậm
- Làm sai lệch thống kê Google Analytics
- Gây tải nặng lên WP Login → dễ bị brute-force
- Tăng chi phí hosting hoặc Cloudflare (nếu bị tấn công)
- Ảnh hưởng SEO vì bot xấu crawling quá nhiều
Vì vậy, nhiều webmaster lựa chọn chặn ngay từ code hoặc firewall để giữ site luôn “sạch”.
Chặn IP trong WordPress bằng .htaccess
Đây là cách hiệu quả nhất, vì webserver sẽ từ chối request trước khi chạy WordPress → cực nhẹ.
Bước 1: Mở file .htaccess
File nằm ở thư mục gốc WordPress:
/public_html/.htaccess
Bước 2: Thêm đoạn sau trước dòng # BEGIN WordPress
# Chặn IP xấu
<RequireAll>
Require all granted
# Danh sách IP bị block
Require not ip 1.2.3.4
Require not ip 5.6.7.8
Require not ip 123.123.123.123
</RequireAll>
Hoặc kiểu cũ:
Order Allow,Deny Allow from all Deny from 1.2.3.4 Deny from 5.6.7.8
IP lấy ở log hosting hoặc trên Cloudflare.
Chặn IP & User-Agent bằng code trong functions.php
Cách này phù hợp với bài hướng dẫn WordPress vì ai cũng dùng được.
Thêm vào file functions.php (child theme)
// Chặn IP & User-Agent cơ bản
add_action( 'init', 'mt247_block_bad_ip_and_ua' );
function mt247_block_bad_ip_and_ua() {
// Không nên chặn trong admin
if ( is_admin() ) return;
// ===== 1) Chặn theo IP =====
$blocked_ips = array(
'1.2.3.4',
'5.6.7.8',
'123.123.123.123',
);
$user_ip = $_SERVER['REMOTE_ADDR'] ?? '';
if ( in_array( $user_ip, $blocked_ips, true ) ) {
status_header(403);
exit('Access denied.');
}
// ===== 2) Chặn theo User-Agent =====
$blocked_ua = array(
'curl',
'wget',
'python-requests',
'scrapy',
'ahrefsbot',
'semrushbot',
'mj12bot',
);
$ua = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
foreach ($blocked_ua as $pattern) {
if ( strpos($ua, strtolower($pattern)) !== false ) {
status_header(403);
exit('Access denied.');
}
}
}
Bạn có thể mở rộng danh sách con bots rất dễ dàng, ví dụ thêm:
telegrambotfacebookexternalhitscreaming frogyandexbot
Tuỳ nhu cầu.
Chặn Country (Quốc gia) bằng code
Nếu website của bạn chỉ phục vụ Việt Nam nhưng lại nhận quá nhiều spam từ Mỹ, Nga, Ấn Độ… thì bạn có thể block theo quốc gia.
Cách này dùng API ipapi.co để xác định quốc gia theo IP (có cache để không gây nặng server).
Bước 1 – Hàm lấy country theo IP (có cache 24h)
function mt247_get_country_by_ip( $ip ) {
if ( ! $ip ) return '';
$transient_key = 'mt247_geo_' . md5($ip);
$cached = get_transient($transient_key);
if ($cached !== false) return $cached;
$response = wp_remote_get("https://ipapi.co/{$ip}/json/", [ 'timeout' => 3 ]);
if (is_wp_error($response)) return '';
$body = json_decode(wp_remote_retrieve_body($response), true);
$country = $body['country'] ?? '';
set_transient($transient_key, $country, DAY_IN_SECONDS);
return $country;
}
Bước 2 – Chặn theo country
add_action( 'init', 'mt247_block_by_country' );
function mt247_block_by_country() {
if ( is_admin() ) return;
// Danh sách quốc gia bị chặn
$blocked_countries = array('US', 'RU', 'IN');
$ip = $_SERVER['REMOTE_ADDR'] ?? '';
$country = mt247_get_country_by_ip($ip);
if ( $country && in_array($country, $blocked_countries, true) ) {
status_header(403);
exit('Access denied.');
}
}
Muốn làm ngược lại? (Chỉ allow Việt Nam)
$allowed = array('VN');
if ( $country && ! in_array($country, $allowed, true) ) {
status_header(403);
exit('Access denied.');
}
Cách này cực hiệu quả cho site nội bộ, site bán hàng trong nước hoặc site landing page chỉ cần traffic Việt Nam.
So sánh nhanh các phương pháp
| Phương pháp | Ưu điểm | Nhược điểm | Khi nào dùng? |
| .htaccess | Rất nhẹ, chặn sớm, ít tốn tài nguyên | Cần biết Apache/LiteSpeed | Chặn IP/User-Agent cơ bản |
| functions.php | Dễ đóng gói vào bài hướng dẫn, dễ sửa | Chặn sau webserver → tốn PHP | Website nhỏ & vừa |
| Chặn Country bằng code | Linh hoạt, tuỳ chỉnh cao | Cần API + cache, hơi nặng | Landing page/website VN-only |
| Cloudflare Firewall | Mạnh nhất, nhẹ nhất | Không phải code | Traffic lớn, bị tấn công nhiều |
Lưu ý quan trọng (tránh tự chặn chính mình)
- Luôn backup .htaccess trước khi sửa
- Không chặn Googlebot, Bingbot, Facebook crawler
- Không block IP khi bạn đang login admin
- Có thể thêm điều kiện skip nếu tài khoản là Admin:
if ( is_user_logged_in() && current_user_can('administrator') ) {
return;
}
- Theo dõi access log để xem IP nào đang spam
Kết luận
Chặn bot spam và fake traffic không chỉ giúp website nhanh hơn, ổn định hơn, mà còn bảo vệ site khỏi những hành vi crawling xấu và brute-force login. Chỉ với vài đoạn code trong .htaccess hoặc functions.php, bạn hoàn toàn có thể chủ động siết lại “cổng vào” website của mình mà không cần plugin nặng.

