Mã trạng thái 410 Gone là gì? Lời tạm biệt cuối cùng

INEZA Felin-Michel

INEZA Felin-Michel

10 tháng 10 2025

Mã trạng thái 410 Gone là gì? Lời tạm biệt cuối cùng

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Bạn đang dọn dẹp "tủ quần áo kỹ thuật số" của mình. Bài đăng blog từ năm 2015 về "Các chủ đề MySpace hàng đầu"? Trang sản phẩm của một mặt hàng đã ngừng sản xuất? Hồ sơ người dùng của một người đã xóa tài khoản của họ? Những thứ này không chỉ tạm thời biến mất; chúng đã bị xóa một cách cố ý, vĩnh viễn. Đối với những trường hợp này, có một câu trả lời dứt khoát hơn mã trạng thái 404 Not Found tiêu chuẩn: mã trạng thái `410 Gone`.

Trong khi `404` có nghĩa là "Tôi không thể tìm thấy cái này ngay bây giờ," thì `410` lại nói một điều mạnh mẽ hơn nhiều: "Cái này đã từng tồn tại, nhưng nó đã bị xóa một cách cố ý và vĩnh viễn. Đừng bận tâm tìm kiếm nó nữa."

Nó tương đương với việc bạn tìm thấy một lô đất trống nơi từng có một tòa nhà, với một tấm biển ghi "Tòa nhà đã bị phá hủy vĩnh viễn" so với việc đơn giản là không thể tìm thấy một địa chỉ. Cả hai đều có nghĩa là bạn không thể truy cập những gì bạn đang tìm kiếm, nhưng một cái kể một câu chuyện rõ ràng hơn nhiều về những gì đã xảy ra.

Dù bạn đang quản lý một trang web, xây dựng một API hay chỉ tò mò về cơ sở hạ tầng web, việc hiểu mã trạng thái `410` có thể giúp bạn giao tiếp rõ ràng hơn với cả người dùng và các công cụ tìm kiếm.

Trong bài đăng blog mang tính trò chuyện và toàn diện này, chúng ta sẽ khám phá mọi thứ bạn cần biết về 410 Gone, từ ý nghĩa và các trường hợp sử dụng đến các phương pháp hay nhất để xử lý nó ở cả phía máy chủ và phía máy khách. Dù bạn là nhà phát triển thiết kế API, người quản lý nội dung quản lý URL hay người dùng tò mò muốn hiểu rõ hơn về các tiêu chuẩn web, hướng dẫn này sẽ cung cấp cho bạn đầy đủ thông tin.

💡
Nếu bạn đang xây dựng hoặc thử nghiệm API cần xử lý quản lý vòng đời tài nguyên, bạn cần một công cụ có thể giúp bạn xác minh rằng các mã trạng thái chính xác được trả về. Tải xuống Apidog miễn phí; đây là một nền tảng API tất cả trong một giúp dễ dàng kiểm tra các điểm cuối và đảm bảo chúng trả về trạng thái HTTP phù hợp, cho dù đó là `200`, `404` hay `410 Gone` dứt khoát.
nút

Bây giờ, hãy cùng khám phá mục đích, sức mạnh và các ứng dụng thực tế của HTTP 410 Gone.

Vấn đề: Sự mơ hồ của 404

Mã trạng thái `404 Not Found` tiêu chuẩn phục vụ một mục đích quan trọng, nhưng nó có một hạn chế đáng kể: sự mơ hồ. Khi một máy chủ trả về `404`, nó có thể có nghĩa là một số điều khác nhau:

Đối với người dùng và các hệ thống tự động như trình thu thập dữ liệu của công cụ tìm kiếm, sự mơ hồ này tạo ra sự không chắc chắn. Liệu họ có nên tiếp tục kiểm tra lại? Liệu họ có nên cập nhật các liên kết của mình? Mã trạng thái `410` được giới thiệu để loại bỏ sự mơ hồ này cho một kịch bản cụ thể: xóa bỏ cố ý, vĩnh viễn.

Định nghĩa chính thức (RFC 7231)

Theo đặc tả HTTP/1.1 (RFC 7231):

"Mã trạng thái 410 (Gone) cho biết rằng quyền truy cập vào tài nguyên đích không còn khả dụng tại máy chủ gốc và rằng điều kiện này có khả năng là vĩnh viễn."

Phần cuối cùng "có khả năng là vĩnh viễn" là điểm mấu chốt. Khi một máy khách (như trình duyệt hoặc người tiêu dùng API) nhận được 410, nó nên ngừng yêu cầu URL đó trong tương lai.

HTTP 410 Gone thực sự có nghĩa là gì?

Mã trạng thái `410 Gone` cho biết rằng tài nguyên được yêu cầu không còn khả dụng tại máy chủ gốc và điều kiện này có khả năng là vĩnh viễn.

Đặc tả RFC 7231 chính thức nêu rõ rằng điều kiện này "được mong đợi là vĩnh viễn" và "các máy khách không nên thử lại yêu cầu sau này."

Một phản hồi `410` điển hình trông như thế này:

HTTP/1.1 410 GoneContent-Type: text/htmlContent-Length: 125
<html><head><title>410 Gone</title></head><body><center><h1>410 Gone</h1></center></body></html>

Đối với API, việc bao gồm ngữ cảnh bổ sung thường hữu ích hơn:

HTTP/1.1 410 GoneContent-Type: application/json
{
  "error": "Gone",
  "message": "This user account was permanently deleted on 2023-06-15.",
  "code": 410
}

Sự khác biệt chính: 410 so với 404

Đây là điểm khác biệt quan trọng nhất cần hiểu. Hãy cùng phân tích nó bằng một phép tương tự đơn giản:

Ý nghĩa kỹ thuật:

Tại sao nên sử dụng 410? Các lợi ích chiến lược

1. SEO và Giao tiếp với Công cụ Tìm kiếm

Đây là một trong những lý do mạnh mẽ nhất để sử dụng `410`. Các công cụ tìm kiếm như Google xử lý các phản hồi `410` khác với lỗi `404`:

2. Sự rõ ràng trong thiết kế API

Trong phát triển API, `410` cung cấp độ chính xác ngữ nghĩa mà `404` thiếu:

Sự khác biệt này có thể rất quan trọng đối với các ứng dụng máy khách cần hiểu tại sao một tài nguyên không khả dụng.

3. Trải nghiệm người dùng

Mặc dù cả hai mã đều dẫn đến một trang lỗi, một trang `410` tùy chỉnh có thể cung cấp thông tin hữu ích hơn:

Sự minh bạch này xây dựng lòng tin với người dùng của bạn.

Các trường hợp sử dụng thực tế cho HTTP 410

1. Cắt tỉa nội dung và dọn dẹp

Khi bạn cố ý xóa nội dung cũ, lỗi thời hoặc chất lượng thấp khỏi trang web của mình, hãy sử dụng `410` thay vì `404`. Điều này đặc biệt hữu ích cho:

2. Xóa nội dung do người dùng tạo

Khi người dùng xóa nội dung của chính họ dù đó là một bài đăng trên mạng xã hội, một bình luận hay toàn bộ tài khoản của họ `410` là phản hồi thích hợp. Nó truyền đạt rõ ràng rằng việc xóa là có chủ ý.

3. Quản lý vòng đời tài nguyên API

Trong các API RESTful, `410` là hoàn hảo để báo hiệu rằng một tài nguyên đã bị xóa vĩnh viễn:

4. Yêu cầu pháp lý và tuân thủ

Đôi khi bạn được yêu cầu xóa nội dung vì lý do pháp lý. Sử dụng `410` cung cấp một dấu vết kiểm toán rõ ràng rằng việc xóa là có chủ ý và vĩnh viễn.

Máy khách nên xử lý phản hồi 410 Gone như thế nào?

Các máy khách nhận được 410 nên:

Các nhà phát triển có thể xử lý 410 Gone như thế nào

Bây giờ chúng ta hãy nói về việc triển khai và gỡ lỗi.

1. Sử dụng 410 trong Apache

Nếu bạn đang sử dụng Apache, bạn có thể định nghĩa phản hồi 410 bằng cách sử dụng `.htaccess` như sau:

Redirect gone /old-page.html

Điều này cho máy chủ biết rằng hãy phản hồi bằng `410 Gone` bất cứ khi nào ai đó yêu cầu `/old-page.html`.

2. Sử dụng 410 trong Nginx

Trong Nginx, bạn có thể cấu hình nó như sau:

location /old-page {
    return 410;
}

Đơn giản, tinh tế và hiệu quả.

3. Trong Express.js (Node.js)

Đây là một ví dụ về việc trả về `410 Gone` trong một ứng dụng Node.js:

app.get('/deprecated-endpoint', (req, res) => {
  res.status(410).json({
    message: 'This endpoint is permanently removed. Please use /v2/new-endpoint.'
  });
});

Điều này đặc biệt hữu ích khi bạn đang ngừng hỗ trợ các tuyến API cũ.

Kiểm tra phản hồi 410 với Apidog

Tài liệu quảng cáo Apidog-2

Bây giờ là phần thú vị: kiểm tra và gỡ lỗi các phản hồi 410 Gone. Việc triển khai mã trạng thái `410` một cách chính xác đòi hỏi phải kiểm tra cẩn thận để đảm bảo chúng chỉ được trả về trong các kịch bản thích hợp. Apidog là một công cụ tuyệt vời cho mục đích này.

Với Apidog, bạn có thể:

1. Kiểm tra trạng thái tài nguyên: Tạo các kịch bản kiểm tra để xác minh API của bạn trả về mã trạng thái chính xác cho các trạng thái tài nguyên khác nhau:

2.  Tự động hóa kiểm tra vòng đời: Tạo các bộ kiểm tra mô phỏng toàn bộ vòng đời của việc tạo, truy cập, xóa và truy cập sau khi xóa tài nguyên để đảm bảo các mã trạng thái chuyển đổi chính xác.

3.  Xác minh tài liệu API: Sử dụng Apidog để ghi lại điểm cuối API nào của bạn có thể trả về `410` và trong điều kiện nào, cung cấp thông tin quan trọng cho các nhà phát triển khác.

4.  Kiểm tra xử lý phía máy khách: Đảm bảo rằng các ứng dụng máy khách diễn giải chính xác các phản hồi `410` và không coi chúng là các lỗi tạm thời cần được thử lại.

nút

Apidog giúp bạn trực quan hóa để bạn có thể thấy chính xác cách máy chủ của mình xử lý các tuyến đường không còn dùng nữa hoặc dữ liệu bị thiếu trong thời gian thực.

Nếu bạn chưa thử, hãy tải xuống Apidog miễn phí. Đây là một nền tảng tất cả trong một để thiết kế, kiểm tra và quản lý API một cách dễ dàng. Và đúng vậy, nó giúp bạn xử lý các trường hợp đặc biệt như `410 Gone` mà không cần viết thêm mã.

Ví dụ triển khai

Cấu hình máy chủ web (Apache)

# For a specific URL that's gone forever
Redirect 410 /old-page.html

# Using mod_rewrite for more complex scenarios
RewriteEngine On
RewriteRule ^discontinued-product/?$ - [G]

Node.js (Express)

app.get('/old-product', (req, res) => {
  res.status(410).json({
    error: 'Gone',
    message: 'This product has been discontinued.',
    discontinued_date: '2023-01-15',
    alternatives: ['/new-product', '/similar-product']
  });
});

Python (Django)

from django.http import HttpResponse

def deleted_post_view(request):
    response = HttpResponse(status=410)
    response['X-Deletion-Reason'] = 'Author removed content'
    return response

Các cân nhắc về SEO: 410 Gone giúp các công cụ tìm kiếm

Các công cụ tìm kiếm coi trạng thái 410 là một tín hiệu mạnh mẽ để nhanh chóng xóa URL khỏi chỉ mục của chúng. So với 404, ban đầu có thể được coi là các trang bị thiếu tạm thời, 410 đẩy nhanh quá trình dọn dẹp nội dung lỗi thời. Điều này giúp duy trì sự liên quan của trang web và cải thiện trải nghiệm người dùng bằng cách giảm các liên kết chết trong kết quả tìm kiếm.

Các phương pháp hay nhất và cân nhắc

Khi nào nên sử dụng 410 so với các mã khác:

Nên bao gồm gì trong phản hồi 410:

Giám sát và bảo trì:

Tâm lý của 410: Giao tiếp trung thực

Có một điều gì đó trung thực đầy sảng khoái về mã trạng thái `410`. Trong một thế giới kỹ thuật số đầy rẫy các liên kết hỏng và lỗi mơ hồ, `410` mang lại sự kết thúc. Nó nói, "Thứ bạn đang tìm kiếm đã biến mất, và chúng tôi không giả vờ khác đi."

Sự trung thực này thực sự có thể cải thiện lòng tin của người dùng. Thay vì tự hỏi liệu có điều gì đó bị hỏng hoặc tạm thời không khả dụng, người dùng nhận được một câu trả lời rõ ràng, dứt khoát. Họ có thể tiếp tục thay vì lãng phí thời gian thử lại hoặc tìm kiếm thứ gì đó sẽ không bao giờ quay trở lại.

Những quan niệm sai lầm phổ biến về 410 Gone

Hãy làm rõ một vài lầm tưởng:

❌ “410 chỉ là một 404 khác.”

Không! 410 truyền đạt việc xóa bỏ có chủ ý, chứ không phải một tài nguyên bị thiếu.

❌ “410 Gone làm hỏng SEO.”

Hoàn toàn ngược lại, nó giúp SEO bằng cách dọn dẹp cấu trúc trang web của bạn và loại bỏ các ngõ cụt một cách hiệu quả.

❌ “Người dùng ghét các trang 410.”

Người dùng thực sự đánh giá cao sự rõ ràng. Một trang `410` được thiết kế tốt có thể cung cấp ngữ cảnh hữu ích, như:

"Trang này đã bị xóa vĩnh viễn. Xem các sản phẩm tương tự [tại đây]."

Khắc phục sự cố phản hồi 410

Nếu máy khách hoặc người dùng báo cáo phản hồi 410 một cách bất ngờ:

Kết luận: Tại sao 410 Gone lại quan trọng đối với sức khỏe web

Mã trạng thái HTTP 410 Gone có thể không nhận được nhiều sự chú ý như 404 hoặc 500, nhưng nó là một tín hiệu mạnh mẽ trong cả phát triển API và quản lý web. Mặc dù việc gặp phải một 410 Gone có thể giống như đâm vào một bức tường, nhưng nó là một phần quan trọng trong việc duy trì một sự hiện diện web sạch sẽ, đáng tin cậy. Nó giúp quản trị viên web truyền đạt sự kết thúc, giúp các công cụ tìm kiếm giữ chỉ mục chính xác và giúp người dùng cũng như ứng dụng biết khi nào một tài nguyên thực sự đã biến mất. Nó nói với người dùng, máy khách và trình thu thập dữ liệu: "Đây không phải là lỗi; đây là cố ý".

Khi được sử dụng đúng cách, nó cải thiện vệ sinh SEO, nâng cao trải nghiệm người dùng và giữ cho vòng đời API của bạn minh bạch.

Bằng cách sử dụng `410` một cách thích hợp, bạn có thể:

Trong một thế giới kỹ thuật số đầy biến động, đôi khi điều hữu ích nhất bạn có thể làm là tuyên bố một điều gì đó đã kết thúc một cách dứt khoát. Hơn nữa, bằng cách kiểm tra các hệ thống và API của bạn bằng các công cụ như Apidog, bạn có thể đảm bảo rằng các trạng thái 410 được xử lý đúng cách và giúp duy trì trải nghiệm liền mạch xung quanh các thay đổi vòng đời nội dung, bạn có thể kiểm tra, mô phỏng và giám sát các phản hồi này một cách dễ dàng, đảm bảo rằng mọi tài nguyên "Gone" đều biến mất vì những lý do chính đáng.

nút

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API