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.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanHTTP Status & Redirect Checker
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 Forbidden nghĩa là máy chủ hiểu yêu cầu nhưng từ chối thực hiện vì bên yêu cầu không có quyền. Mã này khác 404 (“không có gì ở đây”) và 401 (“hãy đăng nhập trước”). Với SEO, trang liên tục trả 403 cho Googlebot sẽ không được lập chỉ mục; nếu từng được lập chỉ mục, trang sẽ bị loại. Vì vậy, 403 trên trang bạn muốn mọi người tìm thấy là vấn đề cần sửa.
403 thực sự có nghĩa là gì
Nếu bạn là khách truy cập vừa gặp 403 trên một site không thuộc quyền quản lý: đây là quy tắc phía máy chủ, không phải lỗi trong trình duyệt. Hãy thử mạng hoặc thiết bị khác, kiểm tra xem site có chặn VPN bạn đang dùng không và xóa cookie. Nếu lỗi vẫn còn, chủ site phải sửa; phần còn lại của bài viết dành cho họ.
Khi bạn hoặc bot công cụ tìm kiếm yêu cầu một trang, máy chủ gửi mã trạng thái. 200 nghĩa là “nội dung đây”. 403 Forbidden nghĩa là “tôi hiểu yêu cầu nhưng từ chối cung cấp”. Lời từ chối không nhất thiết liên quan đến thông tin xác thực; máy chủ có thể từ chối vì lý do khác và thậm chí được phép trả 404 nếu muốn che giấu rằng tài nguyên bị cấm tồn tại. 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
Cách dễ nhất để phân biệt các mã 4xx:
- 404 Not Found — “Không có gì ở đây.” Trang không tồn tại.
- 403 Forbidden — “Có thứ ở đây nhưng bạn không được lấy.” Một lệnh chặn chủ động.
- 401 Unauthorized — “Bạn cần đăng nhập hoặc xác thực trước.” 403 mạnh hơn theo nghĩa đăng nhập cũng không nhất thiết giúp được.
Vì vậy, 403 không có nghĩa máy chủ hỏng. Máy chủ đang làm đúng điều được cấu hình; câu hỏi là cấu hình đó có đúng ý định hay không.
Vì sao điều này quan trọng với SEO
Googlebot phải fetch được trang mới có thể lập chỉ mục. Nếu yêu cầu trang rồi nhận 403, Google không đọc được nội dung nào vì bị từ chối trước bước đó. Google không lập chỉ mục trang trả 403, và trang từng được lập chỉ mục cuối cùng sẽ biến mất khỏi kết quả nếu tiếp tục trả mã này. Kết quả trông giống thêm noindex: trang biến mất khỏi Google. Nhưng cơ chế khác nhau: thẻ noindex phải được fetch và đọc, còn 403 ngăn Google đọc bất kỳ thứ gì ngay từ đầu. 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
Điểm đặc biệt khiến 403 đáng tìm hiểu là Googlebot không bao giờ đăng nhập và không gửi mật khẩu hay thông tin xác thực. Vì vậy, riêng cách giải thích “thông tin xác thực không được chấp nhận” không thể đúng với Googlebot. Dù vậy, lệnh chặn vẫn có thể là chủ ý, như site staging, khu vực quản trị hoặc nội dung bị giới hạn mà bạn không muốn crawl. Điều này chỉ có nghĩa 403 trên trang bạn muốn công khai đáng được điều tra: quy tắc bảo mật, firewall hoặc plugin có thể coi Googlebot là đáng ngờ. Hướng dẫn Google cũng giới hạn giống vậy: nếu muốn trang được lập chỉ mục, hãy cho Googlebot truy cập mà không yêu cầu xác thực.
Nguyên nhân thường gặp
Tôi không có dữ liệu chắc chắn về nguyên nhân phổ biến nhất; hãy coi đây là checklist, không phải bảng xếp hạng:
- CDN hoặc firewall (WAF) chặn bot — Bot Fight Mode của Cloudflare thường có thể bắt cả Googlebot cùng bot xấu.
- Quy tắc máy chủ hoặc hosting chặn một số địa chỉ IP hay user-agent.
- Tệp
robots.txthoặc.htaccesscấu hình sai. - Plugin bảo mật như Wordfence trên WordPress quá mạnh tay.
- Cổng đăng nhập — mọi thứ sau xác thực đều trả 403 cho bot theo thiết kế và trường hợp này thường là chủ ý.
- Lỗi quyền tệp trên máy chủ.
Đường xử lý nhanh
- Trong Google Search Console, mở báo cáo Page Indexing và tìm “Blocked due to access forbidden (403).” (bản dịch) «Bị chặn do quyền truy cập bị từ chối (403)».
- Chạy URL trong công cụ URL Inspection rồi chọn Test Live URL để xem Googlebot nhận gì ngay lúc này.
- Nếu dùng Cloudflare hoặc CDN/firewall khác, hãy kiểm tra log bảo mật xem Googlebot có bị chặn không và cho bot tìm kiếm đã xác minh đi qua.
- Sau khi sửa quy tắc, dùng Validate Fix trong Search Console.
Một việc không nên làm: đừng bao giờ dùng 403 để cố làm chậm Googlebot. Cách này không hiệu quả và có thể khiến trang bị deindex. Nếu bot gây quá tải máy chủ, hãy dùng 429 hoặc 503.
Muốn xem phiên bản sâu hơn gồm chẩn đoán Cloudflare/WAF, lưu ý đặc biệt khi robots.txt trả 403 và cách allowlist bot đúng? Hãy chuyển sang thẻ Nâng cao.
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-Authenticatecho 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.php là 400/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:
- 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.
- 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ả:
Nếu user-agent trình duyệt nhận# 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/200nhưng user-agent Googlebot nhận403, bạn đã tìm thấy quy tắc user-agent. - 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.
- Xem Security Events của CDN/WAF để tìm crawler bị challenge hoặc chặn.
- Xác minh crawler thật sự là Googlebot bằng reverse và forward DNS, không chỉ chuỗi UA dễ giả.
- 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 Unauthorized và 404 Not Found trong cụm này.
Tóm tắt cho AI
Bản cô đọng của phần Nâng cao:
- 403 = “đã hiểu nhưng từ chối”. Theo RFC 9110, lời từ chối không nhất thiết liên quan đến thông tin xác thực và máy chủ thậm chí có thể trả 404 nếu muốn che giấu tài nguyên bị cấm tồn tại. Mã này khác 404 (thường là không tồn tại) và 401 (challenge xác thực cụ thể bắt buộc có header
WWW-Authenticate); xác thực lại không phải cách sửa đáng tin cho 403. - Kết quả lập chỉ mục giống
noindexnhưng cơ chế khác. Thẻnoindexphải được fetch và đọc; 403 ngăn Google đọc mọi nội dung. Cả hai khiến trang không xuất hiện trong Search bằng hai đường khác nhau. - 403 với Googlebot đáng điều tra, không mặc định là lỗi. Trước tiên xác nhận trang cần công khai. Nếu có, nguyên nhân có thể là quy tắc nhắm sai như WAF, chặn IP hoặc plugin bảo mật; không có dữ liệu đáng tin để xếp hạng nguyên nhân, nên dùng checklist.
- 403 không tác động tốc độ crawl toàn site. Tần suất crawl của riêng URL đã biết giảm dần khi tiếp tục trả lỗi nhưng đó không phải điều tiết toàn site. Đừng dùng 401/403 để làm chậm Googlebot; dùng 429/503/500 trong cửa sổ ngắn và nhớ lỗi kéo dài vẫn có nguy cơ deindex.
- Lưu ý robots.txt có tác động ngược: 403 trên trang là chặn cứng; 403 trên chính robots.txt được coi là cho phép, vì Google giả định không có quy tắc crawl.
- Chẩn đoán dựa trên bằng chứng, không giả định. Chỉ 403 không xác định nguồn. Hãy dùng header, log hoặc sự kiện CDN: GSC Page Indexing + Test Live URL → curl có/không có UA Googlebot → CDN Security Events → xác minh bot bằng DNS/IP, không dùng UA → tắt từng giai đoạn.
- Cách sửa: allowlist bot đã xác minh bằng DNS/IP hoặc nhóm “verified bots” của CDN, không chỉ chuỗi UA. Sau đó Validate Fix trong GSC.
- Một số 403 là đúng: staging, quản trị, chỉ dành cho thành viên và paywall; đừng “sửa” chúng khi chưa kiểm tra ý định.
Tài liệu chính thức
Tài liệu nguồn sơ cấp về cách xử lý 403 và nhóm 4xx.
Giao thức
- RFC 9110 §15.5.4: 403 Forbidden — đặc tả HTTP nền: lời từ chối không nhất thiết liên quan đến thông tin xác thực và origin có thể trả 404 để che giấu tài nguyên bị cấm.
- Cách mã trạng thái HTTP tác động đến crawler Google — tuyên bố chính thức rằng URL 4xx trừ 429 bị loại khỏi chỉ mục và không tác động tốc độ crawl.
- Báo cáo Page Indexing — Search Console Help — trạng thái “Blocked due to access forbidden (403)” và lời giải thích Googlebot không cung cấp thông tin xác thực.
- Đừng dùng 403 hoặc 404 để giới hạn tốc độ — Gary Illyes, tháng 02/2023, giải thích vì sao 4xx là công cụ điều tiết crawl sai.
- Giảm tốc độ crawl của Google — cách đúng: trả 500/503/429 trong thời gian ngắn, không dùng 403/404.
- Cách Google diễn giải đặc tả robots.txt — sắc thái rằng 4xx trên robots.txt được coi là không có hạn chế.
- Xác minh Googlebot — reverse DNS và dải IP đã công bố để allowlist đúng.
Bing / Microsoft
- Danh sách cảnh báo lỗi crawl — Bing Webmaster Tools — các nhóm lỗi crawl của Bing.
CDN/WAF
- Phát hiện bot giả chặn nhầm yêu cầu hợp lệ — tài liệu Cloudflare về managed rule bot giả tạo false positive, hữu ích để xác nhận thay vì giả định WAF là tầng phát mã.
Tham chiếu web chung
- MDN — 403 Forbidden — định nghĩa nền có thẩm quyền và phân biệt rõ 401 với 403.
Trích dẫn từ nguồn
Các phát biểu được ghi nhận; mỗi liên kết dẫn sâu đến đoạn được trích trên trang nguồn.
Google — cách xử lý 4xx / 403
- “Google doesn’t use the content from URLs that return 4xx status codes… 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 dùng nội dung từ URL trả mã 4xx… Google không lập chỉ mục URL trả 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 Google Search Central. Đi đến trích dẫn
- “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.» Đi đến trích dẫn
- “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) «401 và 403 không phải công cụ giảm tốc độ crawl; các phản hồi 4xx ngoài 429 không thay đổi tốc độ này.» Đi đến trích dẫn
Google — điểm “Googlebot không bao giờ xác thực”
- “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) «Theo mô tả này, user agent đã gửi thông tin xác thực nhưng không được cấp quyền; riêng Googlebot không gửi thông tin đó nên máy chủ đang phản hồi sai và trang sẽ không được lập chỉ mục.» — Search Console Help, “Blocked due to access forbidden (403)”. Đi đến trích dẫn
Gary Illyes, Google — đừng giới hạn tốc độ bằng 4xx
- “All 4xx HTTP status codes (again, except 429) will cause your content to be removed from Google Search. What’s worse, if you also serve your robots.txt file with a 4xx HTTP status code, it will be treated as if it didn’t exist.” (bản dịch) «Mọi mã HTTP 4xx, trừ 429, sẽ khiến nội dung bị xóa khỏi Google Search. Tệ hơn, nếu robots.txt cũng trả 4xx, tệp sẽ được coi như không tồn tại.» — Google Search Central Blog, tháng 02/2023. Đi đến trích dẫn
- “Return a 500, 503, or 429 HTTP status code to Googlebot when it’s crawling too fast.” (bản dịch) «Hãy trả mã HTTP 500, 503 hoặc 429 cho Googlebot khi nó crawl quá nhanh.» Đi đến trích dẫn
Google — tác động ngược khi robots.txt trả 403
- “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ể tệp robots.txt hợp lệ không tồn tại. Google vì thế giả định không có hạn chế crawl.» — Cách Google diễn giải đặc tả robots.txt. Đi đến trích dẫn
MDN — định nghĩa chung và phân biệt 401 với 403
- “The HTTP 403 Forbidden client error response status code indicates that the server understood the request but refused to process it. This status is similar to 401, except that for 403 Forbidden responses, authenticating or re-authenticating makes no difference.” (bản dịch) «Mã lỗi phía client HTTP 403 Forbidden cho biết máy chủ hiểu yêu cầu nhưng từ chối xử lý. Mã này giống 401, ngoại trừ với 403, xác thực hoặc xác thực lại không tạo khác biệt.» — MDN Web Docs. Đi đến trích dẫn
Barry Schwartz, Search Engine Roundtable — mức nghiêm trọng của 403 so với 503 Đây là bài tường thuật một phát biểu Google, không phải trang Google sơ cấp; chính URL nguồn cũng trả 403 cho công cụ fetch tự động, một sự trùng hợp đúng chủ đề. Hãy xác nhận trong trình duyệt trước khi coi là cuối cùng.
- Bài thuật lại cảnh báo của Google rằ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». Đọc bài
Chẩn đoán 403 — cây quyết định
Bắt đầu từ phản hồi Googlebot thật sự nhận, rồi thu hẹp theo tầng.
C1. 403 có xuất hiện trên trang bạn muốn lập chỉ mục không?
- Không (staging, quản trị, chỉ thành viên, paywall) → có lẽ đúng. Giữ nguyên và dừng tại đây.
- Có → tiếp tục.
C2. Trang trả 403 hay robots.txt trả 403?
- robots.txt trả 403 → vấn đề khác: Google bỏ qua mọi quy tắc crawl như thể robots.txt không tồn tại. Hãy sửa robots.txt để trả
200; 403 trên trang có thể là vấn đề riêng. - Trang trả 403 → tiếp tục.
C3. curl có tái hiện được không, và kết quả có phụ thuộc user-agent không?
curl -I https://example.com/page/
curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page/- UA trình duyệt = 200, UA Googlebot = 403 → một quy tắc user-agent đang chặn bot trong WAF, cấu hình máy chủ hoặc plugin. Đi đến C4.
- Cả hai = 403 → lệnh chặn rộng hơn như dải IP, quyền thư mục hoặc
.htaccessDeny. Kiểm tra cấu hình máy chủ và quyền tệp. - Cả hai = 200 nhưng GSC vẫn báo 403 → lệnh chặn có thể nằm ở edge/CDN và dựa trên IP hoặc trạng thái bot đã xác minh. Đi đến C4 và xem CDN Security Events.
C4. Bạn có dùng CDN/WAF như Cloudflare không?
- Có → xem Security Events để tìm crawler bị challenge hoặc chặn. Kiểm tra Bot Fight Mode / Super Bot Fight Mode, WAF Managed Rules hoặc firewall rule tùy chỉnh. Cho bot tìm kiếm đã xác minh đi qua, không cho phép UA thô.
- Không → kiểm tra chặn IP/UA ở máy chủ, sau đó plugin bảo mật như Wordfence, rồi
.htaccessvà quyền tệp.
C5. Đã sửa quy tắc?
- Allowlist theo bot đã xác minh / DNS / dải IP, không bao giờ chỉ theo UA → Validate Fix trong GSC Page Indexing → yêu cầu lập chỉ mục lại qua URL Inspection nếu khẩn cấp.
Anti-pattern — lỗi 403 tôi thường gặp
Dùng 403 hoặc 404 để làm chậm Googlebot. Quan niệm sai là 403 sẽ điều tiết crawl. Mã này không làm vậy: 4xx trừ 429 không tác động tốc độ crawl mà còn deindex trang trả 403. Nếu cần giảm crawl, hãy trả 429, 503 hoặc 500 trong cửa sổ ngắn, từ vài giờ đến một hay hai ngày, hoặc dùng báo cáo tốc độ crawl Search Console. 403 không bao giờ là công cụ kiểm soát crawl, kể cả tạm thời.
Xử lý 403 y hệt 404 trong audit. Cả hai cuối cùng làm URL rời chỉ mục nên dễ bị gom chung. Nhưng 404 thường nghĩa “đã mất”, còn 403 nghĩa “quyền truy cập bị chủ động từ chối”, có thể là cấu hình sai sửa được hoặc lệnh chặn chủ ý. Gom chung sẽ che giấu vấn đề thật theo cả hai hướng. Hãy chẩn đoán nguyên nhân và ý định, không chỉ kết quả.
Cho rằng Googlebot “làm điều đáng ngờ” nên bị chặn. Googlebot không gửi thông tin xác thực, nên 403 theo nghĩa “thông tin xác thực xấu” không áp dụng. Điều đó không khiến mọi lệnh chặn thành bug; trước tiên xác nhận trang phải công khai. Nếu đúng, đừng hợp lý hóa lệnh chặn như thứ Googlebot gây ra mà hãy tìm quy tắc đã kích hoạt, như WAF, chặn IP hoặc plugin.
Chỉ allowlist theo chuỗi user-agent. UA rất dễ giả; quy tắc allow if UA contains "Googlebot" mời mọi scraper giả danh Google đi thẳng qua bảo mật. Hãy xác minh bằng reverse + forward DNS, dải IP đã công bố hoặc nhóm verified bots của CDN.
Nhầm 403 trên robots.txt với 403 trên trang. Hai tác động trái ngược. 403 trên trang là lệnh chặn cứng khiến trang bị deindex. 403 trên robots.txt khiến Google giả định không có quy tắc crawl, nên có thể crawl đường dẫn bạn muốn cấm. Hãy xác định đúng trường hợp trước khi sửa.
“Sửa” 403 có chủ ý. Site staging, khu vực quản trị, chỉ thành viên và paywall phải chặn crawler. Phản xạ xử lý mọi 403 trong audit có thể làm lộ thứ bạn không muốn lập chỉ mục. Trước tiên xác nhận trang cần công khai.
Khung ý định, phạm vi và tầng phát mã
Audit 403 nhanh hơn khi tôi trả lời ba câu hỏi theo thứ tự:
- Ý định: tài nguyên có nên công khai không? Giữ nguyên lệnh chặn chủ ý cho khu vực riêng tư; coi 403 trên trang có thể lập chỉ mục là sự cố.
- Phạm vi: lỗi ảnh hưởng một URL, một thư mục, một user agent, một khu vực địa lý hay mọi yêu cầu? Ranh giới thường chỉ ra quy tắc chịu trách nhiệm nhanh hơn việc đổi plugin ngẫu nhiên.
- Tầng phát mã: so sánh sự kiện CDN/WAF, access log origin, log ứng dụng và header phản hồi. Chỉ đổi tầng đầu tiên thật sự phát 403, không đổi mọi tầng có khả năng.
Sau khi sửa, hãy xác minh riêng quyền truy cập ẩn danh và quyền của crawler đã xác minh. User agent tự nhận Googlebot hữu ích để tái hiện quy tắc UA nhưng không chứng minh danh tính crawler.
Prompt: cô lập 403 theo tầng
Diagnose this HTTP 403 using only the evidence I paste. Classify the likely issuing
layer as CDN/WAF, web server, application/security plugin, filesystem permissions,
or intentional access control. Compare generic and claimed-bot responses, identify
which observation supports each conclusion, and give the smallest safe change plus
an anonymous curl test and Search Console validation. Do not recommend disabling all
security or trusting a user-agent string as identity.
[PASTE SANITIZED HEADERS, CURL OUTPUT, SECURITY EVENT, AND LOG LINES]Prompt: xem xét ngoại lệ WAF
Review this WAF rule intended to stop 403s for legitimate search crawlers. Check its
scope, whether crawler identity is verified, what non-crawler traffic it could admit,
and whether robots.txt behaves differently from page URLs. Return a least-privilege
rewrite, test cases, and rollback conditions. Do not invent provider syntax.
[PASTE RULE AND PROVIDER] Công cụ chẩn đoán phản hồi 403
- Bulk HTTP Status Code Checker: xác định lệnh chặn chỉ ở một URL hay theo mẫu URL mà không mang session đăng nhập.
- HTTP Header Checker: xem dấu vân tay CDN, request ID và header bảo mật giúp nhận diện tầng phát mã.
- Googlebot Verifier: xác minh bằng chứng IP trước khi cho crawler đi qua; không bao giờ coi chỉ user-agent là bằng chứng.
- Page Indexing và URL Inspection của Search Console: lấy tập URL bị ảnh hưởng, live-test phản hồi hiện tại và xác nhận sau khi sửa.
- Sự kiện bảo mật CDN/WAF cùng log origin: nếu edge ghi lệnh chặn còn origin không có yêu cầu, cách sửa thuộc về edge.
Tự kiểm tra: 403 Forbidden
Năm câu hỏi nhanh về ý nghĩa và cách xử lý 403. Chọn đáp án cho từng câu rồi kiểm tra.
Tài nguyên đáng xem
Bài viết liên quan của tôi
- Mã trạng thái HTTP và tác động SEO — tổng quan 4xx/5xx, vị trí của 403 và cơ chế “4xx khiến trang rời chỉ mục”.
- Hướng dẫn nhập môn Technical SEO — vị trí của vấn đề truy cập crawl/index như 403 trong bức tranh lớn.
- Robots.txt và SEO: mọi điều cần biết — sắc thái robots.txt trả 403 và cách kiểm soát crawl thật sự hoạt động.
Bài nói của tôi
- Cách Search hoạt động trên SlideShare — quy trình crawl → render → index → serve; 403 là lỗi ngay cổng đầu tiên. Tuyên bố giới hạn thường trực: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) «Đây là hiểu biết của tôi về hệ thống… không thể đầy đủ hoặc chính xác 100%.»
Tài nguyên trong ngành
- Đừng dùng 403 hoặc 404 để giới hạn tốc độ — Gary Illyes giải thích vì sao 4xx là công cụ điều tiết crawl sai.
- Giảm tốc độ crawl của Google — cách 500/503/429 đúng để đối chiếu.
- Google cảnh báo về việc dùng sai 403 — giai thoại mức nghiêm trọng 403 so với 503; hãy xác minh trong trình duyệt vì trang chặn bot.
- Google: đừng dùng phản hồi 403/404 để giới hạn Googlebot — bài về hướng dẫn năm 2023.
- Cách sửa Blocked Due to Access Forbidden (403) trong Google Search Console — cấu trúc nguyên nhân/cách sửa tốt, gồm câu hỏi có nên sửa mọi 403 không.
- Cách sửa lỗi Blocked Due to Access Forbidden (403) — giá trị
chmodWordPress cụ thể và quy trình Health Check. - HTTP Status Codes: vì sao website không crawl được? — chẩn đoán phía crawler như đổi UA, render JS và allowlist IP/UA.
Nhật ký thay đổi
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 9 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi 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.