Nội dung bài viết
I. Trạng thái HTTP 401 (Gone) là gì?
Trạng thái HTTP 410 Gone hiển thị rằng tài nguyên mà người dùng đang cố gắng truy cập không còn tồn tại và tài nguyên đó đã bị xóa vĩnh viễn khỏi máy chủ.
II. Sự khác nhau giữa 401 và 404?
- Trạng thái 404 Not Found là gì?
Trạng thái HTTP 404 được trả về khi máy chủ không tìm thấy tài nguyên (trang web, file, v.v.) mà người dùng hoặc bot (như Googlebot) yêu cầu. Điều này có thể xảy ra khi URL bị sai, trang bị xóa nhưng không được xử lý đúng cách, hoặc nội dung không còn tồn tại.
- Trạng thái 410 Gone là gì?
Trạng thái HTTP 410 là một thông báo rõ ràng hơn 404, cho biết tài nguyên không chỉ “không tìm thấy” mà còn thông báo rằng tài nguyên đó đã bị xóa vĩnh viễn và không có ý định khôi phục. Nó khác với 404 ở chỗ 404 không nói rõ liệu tài nguyên có quay lại trong tương lai hay không, trong khi 410 khẳng định tài nguyên đó sẽ biến mất mãi mãi.
III. Trường hợp nào nên sử dụng 410 thay vì 404?
Dưới đây là các trường hợp cụ thể:
- Cải thiện SEO và trải nghiệm công cụ tìm kiếm
Khi các công cụ tìm kiếm như Google gặp mã 410, chúng hiểu rằng trang đó đã bị xóa vĩnh viễn và sẽ nhanh chóng xóa URL đó khỏi chỉ mục (index) của họ. Điều này giúp tránh lãng phí “crawl budget” (ngân sách thu thập dữ liệu) khi bot quay lại kiểm tra URL không còn tồn tại.
Với 404, Google sẽ tiếp tục thu thập dữ liệu URL đó nhiều lần để xác nhận xem nó có thực sự bị xóa vĩnh viễn hay chỉ xóa tạm thời, làm chậm quá trình cập nhật chỉ mục.
- Tín hiệu rõ ràng hơn cho người dùng và Bot (Google)
Mã 410 thể hiện thông điệp rõ ràng tới người dùng hoặc công cụ phân tích rằng tài nguyên đó không còn tồn tại nữa.
- Quản lý nội dung đã xóa hiệu quả hơn
Nếu website của bạn có nhiều trang không còn sử dụng nữa (ví dụ: sản phẩm ngừng kinh doanh, bài viết cũ bị xóa), việc dùng 410 giúp bạn quản lý tốt hơn và tránh nhầm lẫn với các trang chỉ tạm thời không hoạt động.
- Tránh ảnh hưởng đến uy tín của website
Việc để quá nhiều lỗi 404 tồn tại có thể khiến công cụ tìm kiếm đánh giá website của bạn kém chất lượng. Sử dụng 410 sẽ thể hiện rằng bạn chủ động kiểm soát nội dung website của mình.
IV. Các cách thiết lập trạng thái 401
Thời gian gần đây có rất nhiều website bị tình trạng spam search hay spam tạo các url rác trên website, sau đó bị GoogleBot crawl dữ liệu và báo cáo về Google Search Console như ảnh bên dưới.

Tức nhiên là các url này không tồn tại và khi truy cập sẽ trả về lỗi 404, nhưng việc này làm cho GoogleBot phải liên tục crawl để thu thập dữ liệu khiến lãng phí tài nguyên. Do đó chúng ta cần cấu hình để các url không tồn tại, spam này trả về trạng thái 401, để Google hiểu rằng các url này đã được xóa vĩnh viễn và sẽ bỏ qua việc thu thập dữ liệu ở các lần sau.
Dưới đây là các cách cấu hình mà bạn có thể tham khảo. Bạn hãy chọn cách phù hợp với mình nhé.
Cách 1: Sử dụng code
Cách này chỉ nên sử dụng nếu bạn là một lập trình viên hoặc người có kiến thức về Code. Bạn thực hiện như sau
- Mở file functions.php của theme (wp-content/themes/your-theme/functions.php)
Bạn copy đoạn code bên dưới và dán vào bên dưới thẻ mở <?php
// Gửi header HTTP 410 Gone khi phát hiện 404
add_action('template_redirect', function() {
if (is_404()) {
header($_SERVER["SERVER_PROTOCOL"] . " 410 Gone");
}
});

Cách 2: Cấu hình qua Plugin SEO (Khuyên dùng)
Đây là cách mình khuyến nghị các bạn sử dụng, vì cách này thao tác khá đơn giản , cũng như hạn chế được việc các bạn cấu hình sai gây lỗi website. Các bạn có thể cấu hình thông qua các Plugin SEO thông dụng hiện nay như Rank Math SEO hay Yoast SEO. Bên dưới là cách cấu hình qua Rank Math SEO.

Cách 3: Sử dụng file .htaccess
Cách này sẽ khác với Cách 1 và Cách 2, là thay vì áp dụng 401 cho toàn bộ các Url 404, thì ở cách này chúng ta chỉ thiết lập 401 cho các url được chỉ định. Cụ thể Rule bên dưới sẽ chặn các truy vấn có ký tự ( !, @, #, $, %, &, *, ? ) trong Url. Các bạn có thể thay thế ký tự muốn chặn bằng cách sửa nội dung bên trong 2 dấu [].
Lưu ý: Bạn chỉ nên sử dụng cách này nếu bạn thực sự am hiểu, để tránh trường hợp chặn nhầm các Url chính của website.
RewriteEngine On
# Không áp dụng rule cho wp-admin
RewriteCond %{REQUEST_URI} !^/wp-admin [NC]
# Chặn các url có chứa các ký tự ! @ # $ % & * ?
RewriteCond %{REQUEST_URI} "[!@#$%&*?]" [NC]
RewriteRule .* - [G]
Để dễ hình dung hơn, các bạn có thể xem mô tả hình bên dưới:

V. Kiểm tra trạng thái
Sau khi đã hoàn tất việc cấu hình, bạn hãy thử kiểm tra bằng cách truy cập một url nào đó không tồn tại hoặc chứa ký tự mà bạn đã chặn ở trên để kiểm tra. Bạn có thể check thông qua một số cách sau:
- Sử dụng công cụ trực tuyến: Check Your Redirects and Statuscode
Với cách này bạn chỉ cần nhập Url cần kiểm tra và nhấn analyse . Kết quả sẽ trả về ngay bên dưới, nếu trả về kết quả 401 Gone
là chính xác.

- Sử dụng lệnh Curl trên Terminal
Với cách này bạn sử dụng câu lệnh curl -I
và url
cần check như bên dưới:
curl -I http://damtrungkien.com/danh-b@i-tien-len
Tương tự kết quả trả về 401 Gone
là thành công.

Kết luận
Việc sử dụng 410 Gone cho các URL 404 (trong trường hợp tài nguyên bị xóa vĩnh viễn) giúp website của bạn hoạt động hiệu quả hơn, cải thiện SEO, đồng thời gửi tín hiệu rõ ràng đến cả người dùng lẫn các công cụ tìm kiếm. Tuy nhiên, hãy đảm bảo rằng bạn hiểu rõ chức năng và ý nghĩa của nó trước khi sử dụng nhé. Chúc bạn thực hiện thành công.!