Trong quá trình truy cập website hoặc sử dụng các dịch vụ trực tuyến, đôi khi bạn có thể gặp thông báo lỗi khiến trang không thể hiển thị như bình thường. Mặc dù không phổ biến như các lỗi 404 hay 500, lỗi này vẫn có thể làm gián đoạn trải nghiệm người dùng, ảnh hưởng đến hoạt động của website và thậm chí gây tác động đến SEO nếu kéo dài.
Để xử lý hiệu quả, trước hết cần hiểu nguyên nhân khiến lỗi xuất hiện và cơ chế hoạt động của nó. Bài viết dưới đây sẽ giúp bạn tìm hiểu bản chất của lỗi 406 Not Acceptable, những nguyên nhân phổ biến, cách khắc phục cũng như các biện pháp phòng tránh để website vận hành ổn định hơn.
Lỗi 406 Not Acceptable là gì?
406 Not Acceptable là một mã trạng thái HTTP thuộc nhóm 4xx (Client Error), cho biết máy chủ đã nhận và hiểu yêu cầu từ trình duyệt hoặc ứng dụng (client) nhưng không thể trả về nội dung phù hợp với các điều kiện mà client yêu cầu. Thay vì phản hồi bằng định dạng mong muốn, máy chủ sẽ từ chối yêu cầu và trả về mã trạng thái 406.
Khác với lỗi 404 Not Found (không tìm thấy tài nguyên) hay 500 Internal Server Error (lỗi phía máy chủ), lỗi 406 không có nghĩa là website bị sập hoặc dữ liệu không tồn tại. Trong nhiều trường hợp, tài nguyên vẫn có trên máy chủ, nhưng định dạng phản hồi hoặc các điều kiện trong yêu cầu không tương thích nên máy chủ không thể xử lý.

Cơ chế Content Negotiation hoạt động như thế nào?
Để hiểu vì sao lỗi 406 xảy ra, trước tiên cần biết cách trình duyệt và máy chủ trao đổi dữ liệu thông qua cơ chế Content Negotiation (đàm phán nội dung).
Khi người dùng truy cập một website hoặc gửi yêu cầu đến API, client sẽ gửi kèm nhiều HTTP Header để thông báo cho máy chủ biết mình có thể xử lý những loại dữ liệu nào. Dựa trên các thông tin này, máy chủ sẽ lựa chọn phiên bản nội dung phù hợp nhất để phản hồi.
Một số HTTP Header thường được sử dụng trong quá trình này gồm:
- Accept: Xác định loại nội dung mà client có thể xử lý, chẳng hạn như text/html, application/json hoặc application/xml.
- Accept-Language: Chỉ định ngôn ngữ ưu tiên, ví dụ vi-VN, en-US.
- Accept-Encoding: Cho biết các phương thức nén dữ liệu mà client hỗ trợ như gzip, br hoặc deflate.
Nếu máy chủ không thể tạo phản hồi đáp ứng các điều kiện trong những Header này, quá trình đàm phán nội dung sẽ thất bại và phản hồi bằng mã 406 Not Acceptable.
Ví dụ về lỗi 406 Not Acceptable
Giả sử một ứng dụng gửi yêu cầu đến API và chỉ chấp nhận dữ liệu ở định dạng XML:
GET /products HTTP/1.1 Host: example.com Accept: application/xml
Tuy nhiên, máy chủ chỉ hỗ trợ trả dữ liệu ở định dạng JSON. Vì không có phiên bản XML để phản hồi, máy chủ sẽ trả về:
HTTP/1.1 406 Not Acceptable Content-Type: text/plain The server cannot produce a response matching the request.
Qua ví dụ trên có thể thấy, lỗi 406 không phải do máy chủ gặp sự cố mà xuất phát từ việc client và server không thống nhất được định dạng nội dung sẽ trao đổi. Đây cũng là điểm khác biệt quan trọng giữa lỗi 406 với nhiều mã trạng thái HTTP khác.
| Mã trạng thái | Ý nghĩa |
|---|---|
| 400 Bad Request | Yêu cầu không hợp lệ hoặc sai cú pháp. |
| 403 Forbidden | Máy chủ từ chối quyền truy cập vào tài nguyên. |
| 404 Not Found | Không tìm thấy tài nguyên được yêu cầu. |
| 406 Not Acceptable | Máy chủ không thể trả về nội dung phù hợp với các điều kiện mà client yêu cầu. |
| 500 Internal Server Error | Máy chủ gặp lỗi trong quá trình xử lý yêu cầu. |

Nguyên nhân gây ra lỗi 406 Not Acceptable
Lỗi 406 Not Acceptable có thể xuất phát từ phía client, máy chủ hoặc ứng dụng đang xử lý yêu cầu. Tuy nhiên, nguyên nhân cốt lõi vẫn là máy chủ không thể tạo phản hồi phù hợp với các điều kiện mà client đưa ra. Dưới đây là những trường hợp thường gặp nhất.
Tiêu đề Accept không được máy chủ hỗ trợ
Đây là nguyên nhân phổ biến nhất dẫn đến lỗi 406.
Tiêu đề Accept được client sử dụng để thông báo định dạng dữ liệu mong muốn, chẳng hạn như HTML, JSON hoặc XML. Nếu máy chủ không hỗ trợ định dạng này hoặc không thể chuyển đổi dữ liệu sang định dạng tương ứng, yêu cầu sẽ bị từ chối.
Ví dụ, client chỉ chấp nhận dữ liệu XML trong khi máy chủ chỉ có thể phản hồi bằng JSON. Khi đó, thay vì trả về dữ liệu không đúng định dạng, máy chủ sẽ phản hồi bằng mã 406 Not Acceptable.

Cấu hình Content Negotiation không chính xác
Nhiều máy chủ web được cấu hình để tự động lựa chọn phiên bản nội dung phù hợp dựa trên HTTP Header của client. Nếu cơ chế Content Negotiation hoạt động không đúng hoặc bị cấu hình quá chặt, máy chủ có thể không tìm thấy phiên bản nội dung đáp ứng yêu cầu dù tài nguyên vẫn tồn tại. Điều này thường xảy ra khi website hỗ trợ nhiều định dạng dữ liệu hoặc nhiều ngôn ngữ nhưng cấu hình phân phối nội dung chưa chính xác.
Cấu hình máy chủ web gặp lỗi
Một số thiết lập trên Apache hoặc Nginx cũng có thể khiến máy chủ trả về mã trạng thái 406.
Ví dụ:
- Cấu hình MIME Type không chính xác.
- Quy tắc Rewrite hoặc Redirect xung đột.
- Thiết lập giới hạn các định dạng nội dung được phép trả về.
- Cấu hình Virtual Host hoặc Location Block chưa phù hợp.
Những lỗi này thường xuất hiện sau khi thay đổi cấu hình máy chủ hoặc cập nhật hệ thống.

Plugin bảo mật hoặc Web Application Firewall (WAF) chặn yêu cầu
Đối với các website sử dụng WordPress, Joomla hoặc Drupal, lỗi 406 đôi khi không xuất phát từ máy chủ mà do plugin bảo mật hoặc tường lửa ứng dụng web (WAF). Một số công cụ như ModSecurity, Cloudflare WAF hoặc plugin bảo mật của WordPress có thể nhận diện nhầm yêu cầu hợp lệ là hành vi đáng ngờ và tự động chặn truy cập. Khi đó, người dùng sẽ nhận được thông báo 406 Not Acceptable thay vì nội dung của website.
Nếu lỗi xuất hiện ngay sau khi cài đặt hoặc cập nhật plugin bảo mật, đây là nguyên nhân bạn nên kiểm tra đầu tiên.
HTTP Header hoặc MIME Type không tương thích
Ngoài tiêu đề Accept, nhiều HTTP Header khác cũng ảnh hưởng đến quá trình phản hồi của máy chủ.
Chẳng hạn:
- Accept-Language yêu cầu một ngôn ngữ mà website chưa hỗ trợ.
- Accept-Encoding chỉ định phương thức nén dữ liệu không được máy chủ hỗ trợ.
- Content-Type được cấu hình không phù hợp với dữ liệu gửi lên.
Khi các Header này không tương thích với cấu hình của máy chủ, quá trình xử lý yêu cầu có thể thất bại và dẫn đến lỗi 406.
API không hỗ trợ định dạng phản hồi được yêu cầu
Trong quá trình tích hợp API, client thường yêu cầu dữ liệu ở một định dạng cụ thể thông qua HTTP Header hoặc tham số trong URL. Nếu endpoint chỉ hỗ trợ JSON nhưng client lại yêu cầu XML, CSV hoặc một định dạng khác không được cung cấp, API sẽ từ chối yêu cầu và phản hồi bằng mã trạng thái 406.
Đây là lỗi khá phổ biến trong quá trình phát triển và tích hợp hệ thống giữa các ứng dụng.

Phiên bản phần mềm hoặc cấu hình hệ thống không đồng bộ
Sau khi cập nhật CMS, framework, plugin hoặc web server, một số thiết lập cũ có thể không còn tương thích với phiên bản mới. Điều này khiến máy chủ xử lý sai HTTP Header hoặc phản hồi không đúng định dạng mà client yêu cầu.
Vì vậy, nếu lỗi 406 xuất hiện ngay sau khi cập nhật hệ thống, bạn nên kiểm tra lại các thay đổi về cấu hình, plugin hoặc quy tắc bảo mật trước khi thực hiện các bước xử lý khác.
Lưu ý: Trong thực tế, phần lớn lỗi 406 không phải do website bị hỏng mà xuất phát từ cấu hình máy chủ, HTTP Header hoặc các lớp bảo mật như ModSecurity và WAF. Việc kiểm tra các thành phần này trước sẽ giúp rút ngắn đáng kể thời gian xác định và khắc phục sự cố.
Cách khắc phục lỗi 406 Not Acceptable
Sau khi xác định được nguyên nhân, bạn có thể áp dụng các biện pháp dưới đây để khắc phục lỗi 406 Not Acceptable. Tùy vào việc bạn là người dùng thông thường, lập trình viên hay quản trị viên website mà cách xử lý sẽ có sự khác nhau.
Kiểm tra lại URL và thử tải lại trang
Nếu chỉ gặp lỗi khi truy cập một trang cụ thể, hãy kiểm tra lại URL để đảm bảo không có lỗi đánh máy hoặc tham số không hợp lệ. Sau đó, làm mới trang bằng F5 hoặc Ctrl + F5 để xóa bộ nhớ đệm của trình duyệt và gửi lại yêu cầu đến máy chủ.
Trong một số trường hợp, lỗi chỉ xảy ra tạm thời do cấu hình hoặc bộ nhớ đệm chưa được đồng bộ nên việc tải lại trang có thể giải quyết vấn đề.

Kiểm tra HTTP Header của yêu cầu
Đối với lập trình viên hoặc người đang làm việc với API, hãy kiểm tra các HTTP Header được gửi trong request, đặc biệt là:
- Accept
- Accept-Language
- Accept-Encoding
- Content-Type
Đảm bảo các Header này phù hợp với định dạng mà máy chủ hoặc API hỗ trợ. Ví dụ, nếu API chỉ phản hồi dữ liệu ở định dạng JSON, bạn nên sử dụng:
- Accept: application/json
Thay vì yêu cầu một định dạng mà máy chủ không hỗ trợ.
Vô hiệu hóa plugin hoặc tường lửa bảo mật
Nếu website sử dụng WordPress hoặc CMS khác, hãy thử tạm thời vô hiệu hóa các plugin bảo mật, Web Application Firewall (WAF) hoặc các quy tắc của ModSecurity.
Sau mỗi lần tắt một thành phần, hãy kiểm tra lại website để xác định xem lỗi đã được khắc phục hay chưa. Nếu nguyên nhân xuất phát từ plugin hoặc tường lửa, bạn nên:
- Cập nhật lên phiên bản mới nhất.
- Điều chỉnh lại các quy tắc bảo mật.
- Thay thế bằng giải pháp khác nếu cần.

Kiểm tra nhật ký máy chủ (Server Logs)
Server Logs là nguồn thông tin quan trọng giúp xác định nguyên nhân gây lỗi.
Bạn nên kiểm tra các tệp nhật ký của máy chủ để biết:
- Thời điểm lỗi xảy ra.
- URL hoặc API bị ảnh hưởng.
- HTTP Header được gửi trong yêu cầu.
- Plugin hoặc quy tắc bảo mật nào đã chặn request.
Đối với Apache, bạn có thể xem file error.log, trong khi Nginx thường sử dụng error.log và access.log để ghi lại thông tin về các yêu cầu và lỗi phát sinh.
Kiểm tra cấu hình máy chủ
Nếu lỗi vẫn tiếp diễn, hãy rà soát lại cấu hình của máy chủ web, đặc biệt là các nội dung liên quan đến việc xử lý HTTP Request.
Một số thành phần cần kiểm tra gồm:
- Thiết lập Content Negotiation.
- MIME Type.
- Quy tắc Rewrite và Redirect.
- Virtual Host (Apache).
- Location Block (Nginx).
- Cấu hình ModSecurity hoặc Web Application Firewall (WAF).
Việc cấu hình sai ở bất kỳ thành phần nào cũng có thể khiến máy chủ từ chối phản hồi và trả về mã trạng thái 406.
Khôi phục các thay đổi gần đây
Nếu lỗi xuất hiện sau khi cập nhật plugin, theme, CMS hoặc thay đổi cấu hình máy chủ, hãy cân nhắc khôi phục về phiên bản hoạt động ổn định trước đó. Đây là cách giúp nhanh chóng xác định liệu nguyên nhân có đến từ những thay đổi gần đây hay không, đồng thời hạn chế thời gian gián đoạn hoạt động của website.
Liên hệ nhà cung cấp hosting hoặc quản trị viên hệ thống
Nếu đã thử các phương pháp trên nhưng lỗi vẫn chưa được khắc phục, bạn nên liên hệ với nhà cung cấp hosting hoặc quản trị viên hệ thống để được hỗ trợ.
Họ có thể kiểm tra sâu hơn các thành phần như cấu hình Apache, Nginx, ModSecurity, WAF, Reverse Proxy hoặc nhật ký hệ thống mà người dùng thông thường không có quyền truy cập. Điều này giúp xác định chính xác nguyên nhân và đưa ra giải pháp phù hợp trong thời gian ngắn nhất.
Lỗi 406 Not Acceptable có ảnh hưởng đến SEO không?
Câu trả lời là có, nhưng mức độ ảnh hưởng sẽ phụ thuộc vào phạm vi và thời gian lỗi xảy ra.
Nếu lỗi 406 chỉ xuất hiện ở một vài yêu cầu riêng lẻ hoặc được khắc phục nhanh chóng, website thường sẽ không bị ảnh hưởng đáng kể. Tuy nhiên, khi lỗi xảy ra trên nhiều trang hoặc kéo dài trong thời gian dài, cả người dùng và các công cụ tìm kiếm đều có thể gặp khó khăn khi truy cập nội dung.
Một số tác động của lỗi 406 đối với SEO gồm:
- Giảm khả năng thu thập dữ liệu (Crawling): Nếu công cụ tìm kiếm liên tục nhận được mã trạng thái 406, quá trình thu thập dữ liệu có thể bị gián đoạn, khiến một số trang không được lập chỉ mục hoặc cập nhật kịp thời.
- Ảnh hưởng đến trải nghiệm người dùng: Khách truy cập không thể xem nội dung mong muốn sẽ có xu hướng rời khỏi website sớm, làm tăng tỷ lệ thoát và giảm mức độ tương tác.
- Làm giảm độ tin cậy của website: Việc thường xuyên xuất hiện các mã lỗi HTTP cho thấy website đang gặp vấn đề về cấu hình hoặc khả năng phản hồi, từ đó ảnh hưởng đến uy tín trong mắt người dùng và công cụ tìm kiếm.
Mặc dù lỗi 406 không phải là yếu tố xếp hạng trực tiếp, nhưng nếu tồn tại trong thời gian dài hoặc xuất hiện trên nhiều URL quan trọng, nó có thể tác động tiêu cực đến hiệu suất SEO và khả năng hiển thị của website.

Cách phòng tránh lỗi 406 Not Acceptable
Chủ động phòng tránh luôn hiệu quả hơn việc xử lý sự cố sau khi lỗi xảy ra. Dưới đây là một số biện pháp giúp hạn chế nguy cơ gặp lỗi 406 trong quá trình vận hành website.
- Cấu hình máy chủ đúng cách: Hãy đảm bảo máy chủ được cấu hình để hỗ trợ các định dạng nội dung phổ biến và xử lý chính xác các HTTP Header như Accept, Accept-Language, Accept-Encoding và Content-Type. Đồng thời, cần kiểm tra định kỳ các quy tắc của Apache, Nginx hoặc Web Application Firewall (WAF) để tránh vô tình chặn những yêu cầu hợp lệ.
- Thường xuyên cập nhật website và phần mềm: Nếu sử dụng WordPress hoặc các hệ quản trị nội dung khác, hãy duy trì phiên bản mới nhất của CMS, plugin, theme và các thành phần liên quan. Những bản cập nhật không chỉ bổ sung tính năng mà còn khắc phục các lỗi tương thích và lỗ hổng bảo mật có thể dẫn đến lỗi 406.
- Theo dõi nhật ký hệ thống: Việc kiểm tra Server Logs định kỳ giúp bạn phát hiện sớm các yêu cầu bất thường, lỗi cấu hình hoặc xung đột phát sinh trong quá trình vận hành. Nhờ đó, các vấn đề có thể được xử lý trước khi ảnh hưởng đến người dùng hoặc hoạt động của website.
- Kiểm tra sau mỗi lần thay đổi cấu hình: Sau khi cài đặt plugin mới, chỉnh sửa tệp cấu hình hoặc cập nhật máy chủ, hãy kiểm tra lại website và các API quan trọng để đảm bảo mọi chức năng vẫn hoạt động bình thường. Điều này giúp phát hiện sớm các lỗi phát sinh và giảm nguy cơ gián đoạn dịch vụ.
Lỗi 406 Not Acceptable xảy ra khi máy chủ không thể cung cấp nội dung theo định dạng hoặc điều kiện mà client yêu cầu. Mặc dù không phải là mã lỗi HTTP phổ biến, nhưng nếu không được xử lý kịp thời, lỗi này có thể ảnh hưởng đến trải nghiệm người dùng, hoạt động của website và hiệu quả SEO.
Để khắc phục, bạn nên bắt đầu bằng việc kiểm tra HTTP Header, cấu hình máy chủ, plugin bảo mật và nhật ký hệ thống để xác định chính xác nguyên nhân. Đồng thời, việc cập nhật phần mềm thường xuyên, cấu hình máy chủ hợp lý và giám sát website định kỳ sẽ giúp hạn chế lỗi 406 xuất hiện trong tương lai.
