Lỗi 403 Forbidden

Lỗi HTTP 403 là gì, cách Google xử lý trang bị chặn tương tự noindex, các nguyên nhân như kiểm soát truy cập hoặc quyền sai và cách sửa 403 cho SEO.

Xuất bản lần đầu: 27 thg 6, 2026 · Cập nhật lần cuối: 22 thg 8, 2026 · Advanced
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này

403 Forbidden nghĩa là máy chủ hiểu yêu cầu nhưng từ chối: quyền truy cập bị bác bỏ và lý do không nhất thiết liên quan đến thông tin xác thực; máy chủ thậm chí có thể trả 404 để che giấu tài nguyên bị cấm tồn tại. Đây không phải 404 (“không có gì ở đây”) hay 401 (“hãy xác thực trước”), mà là lời chủ động “bạn không được lấy nội dung này”. Với SEO, 403 kéo dài trên trang cần công khai khiến trang nằm ngoài chỉ mục Google, cho kết quả giống noindex nhưng bằng cơ chế khác vì Google không đọc được nội dung từ phản hồi 4xx. Googlebot không gửi thông tin xác thực, nên 403 dành cho nó đáng điều tra; nguyên nhân có thể là bộ lọc bot CDN/WAF, chặn IP/user-agent ở máy chủ, plugin bảo mật hoặc lỗi .htaccess/quyền, dù không có dữ liệu đáng tin để xếp hạng tần suất. Đừng dùng 403 để điều tiết crawl; dùng 429/503 trong cửa sổ ngắn. Trước tiên hãy kiểm tra ý định vì 403 trên staging, quản trị hoặc nội dung bị giới hạn có thể đúng. Tác động ngược cần nhớ: 403 trên chính robots.txt được xử lý theo hướng cho phép, còn 403 trên trang là chặn cứng.

Tóm tắt — 403 nghĩa là máy chủ hiểu yêu cầu và từ chối vì quyền truy cập, khác với 404 (không còn) và 401 (yêu cầu xác thực). Về lập chỉ mục, kết quả giống noindex: Google không lập chỉ mục URL trả 403 và xóa URL từng được lập chỉ mục, dù cơ chế chặn ở máy chủ/CDN/WAF hoàn toàn khác thẻ meta. Googlebot không gửi thông tin xác thực, nên 403 trên trang lẽ ra công khai gần như luôn là cấu hình sai, thường do bộ lọc bot CDN/WAF, chặn IP/user-agent, plugin bảo mật hoặc .htaccess/quyền tệp. Tuy nhiên, 403 trên nội dung cố ý riêng tư có thể đúng. Mã 403 không tác động tốc độ crawl; đừng dùng nó để điều tiết, việc đó dành cho 429/503. Trường hợp ngược đáng chú ý: 403 trên chính robots.txt được xử lý theo hướng cho phép, còn 403 trên trang là lệnh chặn cứng.

403, 401 và 404 — trước hết hãy hiểu đúng mô hình

Ba mã này liên tục bị nhập làm một, trong khi khác biệt quyết định toàn bộ chẩn đoán. Định nghĩa nền đến từ RFC 9110 §15.5.4: máy chủ hiểu yêu cầu nhưng từ chối thực hiện. Một vài sắc thái trong cùng mục quan trọng hơn nhiều người nghĩ:

  • Lời từ chối không nhất thiết liên quan đến thông tin xác thực. RFC 9110 cho phép 403 vì lý do không liên quan đến xác thực; mã này không phải bằng chứng phổ quát rằng bên yêu cầu đã được “nhận diện” hay từng gửi thông tin xác thực. Đừng biến mọi 403 thành câu chuyện đăng nhập.
  • 403 không bắt buộc phải thừa nhận tài nguyên tồn tại. Đặc tả cho phép origin muốn che giấu tài nguyên bị cấm trả 404 thay thế. Điều ngược lại cũng đúng: 404 không phải lúc nào cũng nghĩa “chưa từng có gì ở đây”; đôi khi nghĩa là “có thứ ở đây nhưng tôi không muốn bạn biết”.
  • 401 và 403 không chỉ là “yếu hơn với mạnh hơn”. 401 là một challenge xác thực cụ thể và phải có header WWW-Authenticate cho biết cách xác thực. 403 không có yêu cầu đó; đây là lời từ chối rộng hơn, không hứa rằng xác thực lại bằng thông tin cũ hay mới sẽ thay đổi điều gì. MDN nói 403 “similar to 401, except that … authenticating or re-authenticating makes no difference. The request failure is tied to application logic, such as insufficient permissions.” (bản dịch) «giống 401, ngoại trừ xác thực hoặc xác thực lại không tạo khác biệt; lỗi gắn với logic ứng dụng như thiếu quyền». Evidence for this claim A 403 response means the server understood the request but refuses to fulfill it, and authenticating does not necessarily make a difference. Scope: RFC 9110 defines the protocol semantics; it does not identify the application, firewall, or policy responsible for a specific response. Confidence: high · Verified: IETF: RFC 9110 §15.5.4 — 403 Forbidden
  • 404 Not Found trong trường hợp thông thường nghĩa là “không có gì ở đây”, nhưng hãy nhớ ngoại lệ che giấu nói trên.

Khác biệt đó khiến 403 với Googlebot đáng xem lại thay vì coi là bình thường. 401 với bot trên khu vực chỉ dành cho thành viên có thể là hệ thống đang hoạt động đúng: khu vực cần đăng nhập. 403 với bot trên trang lẽ ra công khai nghĩa là một quy tắc quyết định bên yêu cầu không được chào đón. Tuy nhiên, hãy xác nhận trang thật sự cần công khai trước khi gọi đó là bug.

Google xử lý 403 thế nào: kết quả giống noindex, cơ chế thì không

Google xếp 403 cùng nhóm 4xx. Tài liệu Search Central nói: “Google doesn’t index URLs that return a 4xx status code, and URLs that are already indexed and return a 4xx status code are removed from the index.” (bản dịch) «Google không lập chỉ mục URL trả mã 4xx; URL đã được lập chỉ mục rồi trả 4xx sẽ bị xóa khỏi chỉ mục.» Tài liệu còn nói: “All 4xx errors, except 429, are treated the same: Google crawlers inform the next processing system that the content doesn’t exist.” (bản dịch) «Mọi lỗi 4xx, trừ 429, đều được xử lý giống nhau: crawler Google báo cho hệ thống tiếp theo rằng nội dung không tồn tại.» Google cũng lưu ý tần suất crawl một URL đã biết giảm dần khi URL tiếp tục trả 4xx; đây là tác động theo URL, khác với tốc độ crawl toàn site. Evidence for this claim Google does not index 4xx URLs and removes already-indexed 4xx URLs over time. Scope: Google's crawler documentation supports the indexing outcome for persistent 403 responses, not the article's analogy to noindex. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers

Vì vậy, kết quả giống noindex: trang không vào chỉ mục và nếu đã ở đó thì sẽ bị loại theo thời gian. Nhưng cơ chế thực sự khác: thẻ noindex phải được fetch và phân tích trong HTML mới có tác dụng, còn 403 ngăn Google đọc bất kỳ nội dung nào; Google không có trang để xử lý. Hai đường khác nhau cùng dẫn đến việc không xuất hiện trong Search. Trong hướng dẫn HTTP Status Codes, tôi mô tả 403 là “the client is known but doesn’t have access rights” (bản dịch) «đã biết client nhưng client không có quyền truy cập» và lưu ý 4xx khiến trang bị loại khỏi chỉ mục. Tuy nhiên, “đã biết” ở đây là cách nói tắt trong báo cáo Google, không phải khẳng định mọi 403 đều có bên yêu cầu đã xác thực.

Vì sao nên điều tra 403 với Googlebot, nhưng không mặc định đó là lỗi

Phần này dựa trên tài liệu Page Indexing của Google: “HTTP 403 means that the user agent provided credentials, but was not granted access. However, Googlebot never provides credentials, so your server is returning this error incorrectly. The page will not be indexed.” (bản dịch) «HTTP 403 nghĩa là user agent đã cung cấp thông tin xác thực nhưng không được cấp quyền. Tuy nhiên, Googlebot không bao giờ cung cấp thông tin xác thực, nên máy chủ đang trả lỗi không đúng. Trang sẽ không được lập chỉ mục.» Cần đọc đúng ngữ cảnh: đây là hướng dẫn trong báo cáo cho trang Search Console giả định bạn muốn lập chỉ mục, không phải tuyên bố mọi 403 với Googlebot đều là bug. Googlebot không xác thực, nên cách hiểu thuần túy “thông tin xác thực chưa đủ tốt” không áp dụng; nhưng nhiều 403 không liên quan đến xác thực và máy chủ có thể hợp lệ khi từ chối tài nguyên.

Trước khi sửa, hãy hỏi: đây có phải trang bạn thật sự muốn công khai và lập chỉ mục không? Nếu là staging, khu vực quản trị, paywall hoặc nội dung bị giới hạn, 403 với Googlebot là đúng và không cần sửa. Nếu trang phải công khai, nhiều khả năng một quy tắc đã nhắm sai bên yêu cầu, như WAF gắn nhãn bot cần chặn, chặn dải IP bao gồm dải Google hoặc plugin bảo mật quá nhạy. Tôi không có dữ liệu đáng tin về tỷ lệ từng nguyên nhân, nên coi danh sách sau là ứng viên cần kiểm tra chứ không phải chẩn đoán. Hướng dẫn Google cho trang nên công khai là cho người chưa đăng nhập truy cập hoặc cho phép Googlebot không xác thực sau khi xác minh danh tính.

403 không tác động tốc độ crawl — đừng dùng để điều tiết

Đôi khi người ta dùng 403 hoặc 404 để buộc Googlebot giảm tải cho máy chủ. Đừng làm vậy. Google nói rõ: “Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (bản dịch) «Đừng dùng mã 401 và 403 để giới hạn tốc độ crawl. Mã 4xx, trừ 429, không tác động đến tốc độ crawl.» Phạm vi cần nói chính xác: Google cũng cho biết tần suất crawl của một URL đã biết giảm khi URL tiếp tục trả 4xx, nhưng đó là giảm quan tâm đến riêng URL, không phải điều tiết tốc độ crawl toàn site. Nếu cần mục tiêu sau, 403 không giúp được.

Gary Illyes viết cả bài Don’t 404 my yum về việc này: “All 4xx HTTP status codes (again, except 429) will cause your content to be removed from Google Search.” (bản dịch) «Mọi mã trạng thái HTTP 4xx, trừ 429, sẽ khiến nội dung bị xóa khỏi Google Search.» Cần dùng 500, 503 hoặc 429 trong cửa sổ ngắn, tính bằng giờ chứ không phải ngày. Ngay cả vậy cũng có rủi ro: Google cảnh báo 5xx kéo dài nhiều ngày có thể khiến trang bị loại, nên phạm vi và thời lượng đều quan trọng. Bài của Barry Schwartz về một sự cố trước đó nói thẳng site đã “lost load[s] of their pages from our index because they were serving them with a 403 status code instead of a 503.” (bản dịch) «mất rất nhiều trang khỏi chỉ mục vì phục vụ 403 thay cho 503». 503 được hiểu là tạm thời; 403 dẫn đến deindex.

Lưu ý robots.txt: 403 trên robots.txt là cho phép, không phải hạn chế

Đây là khác biệt hầu hết bài cạnh tranh bỏ lỡ và nó đảo ngược trực giác. 403 trên trang là lệnh chặn cứng. Nhưng 403 trên chính tệp robots.txt được xử lý ngược lại. Đặc tả robots.txt của Google nói: “Google’s crawlers treat all 4xx errors, except 429, as if a valid robots.txt file didn’t exist. This means that Google assumes that there are no crawl restrictions.” (bản dịch) «Crawler Google coi mọi lỗi 4xx, trừ 429, như thể không có tệp robots.txt hợp lệ; Google giả định không có hạn chế crawl.» Evidence for this claim A 403 on `/robots.txt` is handled differently from a 403 on a page: Google treats a non-429 4xx robots response as if no valid robots file exists and assumes no restrictions from that file. Scope: robots.txt fetch only Confidence: high · Verified: How Google interprets the robots.txt specification

Vì vậy, nếu firewall bắt đầu trả 403 cho robots.txt, Google kết luận bạn không có quy tắc và crawl tự do, gồm cả đường dẫn bạn muốn disallow. Cách nói sinh động của Illyes là nếu từng có quy tắc cấm “đồ bẩn”, giờ Googlebot cũng biết về nó. Đừng nhập “robots.txt trả 403” (Google bỏ qua quy tắc) với “trang trả 403” (URL bị deindex). Hai trường hợp có tác động trái ngược và chẩn đoán sai sẽ khiến bạn sửa nhầm.

Bing xử lý 403 thế nào

Tài liệu công khai của Bing riêng về 403 ít chi tiết hơn Google, nên tôi giữ phạm vi hẹp. Bingbot bị từ chối bởi cùng cơ chế như Googlebot: quy tắc robots.txt, chặn IP/user-agent ở máy chủ và quy tắc WAF/firewall. Bing Webmaster Tools hiển thị lỗi crawl trong cảnh báo crawl-error. Kết luận thực hành giống nhau ở hai công cụ: cho crawler đã xác minh đi qua tầng bảo mật và xác minh bot bằng dải IP đã công bố cùng reverse DNS thay vì tin user-agent. “Sửa Googlebot” không mặc nhiên sửa mọi bot; hãy kiểm tra công cụ của cả hai sau thay đổi WAF.

Nguyên nhân phổ biến, không xếp hạng vì tôi không có dữ liệu tỷ lệ toàn site

Bảo vệ bot ở CDN/WAF — nguyên nhân ít được nội dung SEO hiện tại đề cập nhất. Đây là nơi tôi sẽ kiểm tra đầu tiên trong năm 2026, dù không thể nói nó xảy ra thường xuyên hơn các nguyên nhân dưới. Bot Fight Mode, Super Bot Fight Mode, WAF Managed Rules và quy tắc firewall tùy chỉnh của Cloudflare thường có thể trả 403 cho Googlebot hay Bingbot như thiệt hại phụ. Dấu hiệu là lệnh chặn nằm ở edge, nên origin và CMS hoàn toàn sạch trong khi GSC vẫn báo 403. Hãy xem Security Events trong dashboard CDN để tìm crawler bị challenge hoặc chặn.

2. Chặn IP hoặc user-agent ở máy chủ/hosting. Một số host mặc định chặn theo user-agent hoặc giới hạn tốc độ; dải IP nhằm chặn lưu lượng lạm dụng cũng có thể bao gồm dải crawler.

3. Cấu hình sai robots.txt / .htaccess. Một lệnh Deny from còn sót hoặc rewrite rule hỏng có thể cấm cả thư mục. Hãy nhớ lưu ý riêng về robots.txt ở trên.

4. Plugin bảo mật. Wordfence, iThemes Security và công cụ tương tự có mặc định chặn bot mạnh tay, có thể bắt cả crawler hợp lệ.

5. Cổng đăng nhập / nội dung đã xác thực. Mọi thứ sau auth đều trả 403 cho bot theo thiết kế vì Googlebot không đăng nhập. Trường hợp này thường là chủ ý.

6. Lỗi quyền tệp / thư mục. Đây là nguyên nhân quản trị máy chủ kinh điển. Trên WordPress, Rank Math ghi các giá trị hợp lý: thư mục 755/750, tệp 644/640, wp-config.php400/440; tái tạo .htaccess qua cài đặt Permalinks cũng là cách sửa phổ biến.

7. Malware hoặc site bị xâm nhập chèn quy tắc truy cập xấu, và 8. chặn địa lý vô tình bắt dải IP crawler.

Chẩn đoán 403 — cô lập tầng nào đang phát mã

Nhiều hướng dẫn nhảy thẳng đến “tắt plugin”. Kỹ năng thật sự là tìm tầng từ chối yêu cầu. Chỉ mã 403 không cho biết nguồn; bạn cần header phản hồi, log hoặc security-event thực sự chỉ ra CDN, WAF, ứng dụng, host, quyền, địa lý hay cache trước khi gọi tên thủ phạm. Đừng kết luận “chắc là WAF” khi chưa có bằng chứng. Cách sửa khác nhau theo từng tầng:

  1. Vào GSC Page Indexing → “Blocked due to access forbidden (403)” để xem URL bị ảnh hưởng, rồi dùng URL Inspection → Test Live URL cho phản hồi hiện tại.
  2. Tái hiện bằng curl, đổi user-agent để xác nhận trạng thái máy chủ thật sự trả:
    # As a generic client
    curl -I https://example.com/page/
    # Spoofing Googlebot's UA (tests UA-based rules)
    curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page/
    Nếu user-agent trình duyệt nhận 200 nhưng user-agent Googlebot nhận 403, bạn đã tìm thấy quy tắc user-agent.
  3. Kiểm tra trạng thái của chính robots.txt: nếu tệp đó trả 403 thì đây là vấn đề khác như nói trên.
  4. Xem Security Events của CDN/WAF để tìm crawler bị challenge hoặc chặn.
  5. Xác minh crawler thật sự là Googlebot bằng reverse và forward DNS, không chỉ chuỗi UA dễ giả.
  6. Cô lập bằng cách tắt từng giai đoạn, mỗi lần một quy tắc WAF hoặc plugin, cho đến khi 403 hết.

Sửa lỗi — allowlist bot đúng cách

Cách sửa hấp dẫn là allowlist chuỗi user-agent Googlebot. Đừng dừng ở đó: UA rất dễ giả, nên chỉ allowlist theo UA tạo lỗ hổng cho mọi scraper tự nhận là Googlebot đi qua bảo mật. Hãy xác minh đúng:

  • Xác nhận bot bằng reverse DNS + forward DNS hoặc dải IP đã công bố của Google/Bing.
  • Hầu hết CDN/WAF có nhóm “verified bots” tự xác minh; ưu tiên nhóm đó hơn quy tắc cho phép UA thô.
  • Sửa đúng quy tắc cụ thể như một managed rule WAF, một firewall rule hay một cài đặt plugin, không tắt toàn bộ bảo mật.
  • Sau đó dùng Validate Fix trong báo cáo Page Indexing của GSC và nếu khẩn cấp, yêu cầu lập chỉ mục lại qua URL Inspection.

Khi 403 thật sự phù hợp — đừng “sửa” các trường hợp này

Không phải mọi 403 đều là bug. 403 đúng và có chủ ý với site staging, khu vực quản trị, phần chỉ dành cho thành viên và nội dung paywall/bị giới hạn mà bạn không muốn lập chỉ mục. Trong audit Ahrefs hoặc Screaming Frog, 403 trên những URL đó không phải vấn đề; chỉ cần sửa khi trang lẽ ra công khai và có thể lập chỉ mục vô tình bị chặn. Đừng phản xạ “xử lý” mọi 403 trong audit; trước tiên hãy xác nhận bạn muốn trang nằm trong chỉ mục.

Để xem cả nhóm rộng hơn, như 4xx khác 5xx thế nào và 403 nằm ở đâu, hãy đọc Mã trạng thái HTTP và tác động SEO cùng bài chuyên sâu 401 Unauthorized404 Not Found trong cụm này.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.