Mã phản hồi HTTP đúng về mặt ngữ nghĩa cho tình huống này sẽ là 403 Bị cấm :
Máy chủ hiểu yêu cầu, nhưng từ chối thực hiện nó. Ủy quyền sẽ không giúp đỡ và yêu cầu KHÔNG NÊN lặp lại. Nếu phương thức yêu cầu không phải là CHÍNH và máy chủ muốn công khai lý do tại sao yêu cầu chưa được thực hiện, thì NÊN mô tả lý do từ chối trong thực thể. Nếu máy chủ không muốn cung cấp thông tin này cho khách hàng, mã trạng thái 404 (Không tìm thấy) có thể được sử dụng thay thế.
(Mặc dù định nghĩa của phản ứng 403 nói rằng "ủy quyền sẽ không giúp đỡ", IMO này nên được hiểu như ám chỉ đặc biệt để xác thực HTTP Basic / Digest , mà mã trạng thái 401 trái phép nên được sử dụng để thay thế. Vì bạn đang không sử dụng một trong những phương thức xác thực đó, 403 là mã trạng thái phù hợp trong trường hợp của bạn.)
Tuy nhiên, sử dụng một mã số 403 tình trạng tiết lộ (hoặc ít nhất là mạnh mẽ ngụ ý) thực tế rằng có là một trang với URL đó, mặc dù các Máy chủ từ chối cung cấp nó. Vì đây là điều mà bạn có thể muốn che giấu khỏi những kẻ xâm nhập tiềm năng, tiêu chuẩn HTTP / 1.1 cho phép trả lại rõ ràng mã trạng thái 404 Không tìm thấy ( nhấn mạnh của tôi):
Máy chủ không tìm thấy bất cứ thứ gì khớp với URI yêu cầu. Không có dấu hiệu nào được đưa ra cho dù điều kiện là tạm thời hay vĩnh viễn. Mã trạng thái 410 (Đã qua) NÊN được sử dụng nếu máy chủ biết, thông qua một số cơ chế có thể định cấu hình bên trong, rằng tài nguyên cũ không có sẵn vĩnh viễn và không có địa chỉ chuyển tiếp.
Mã trạng thái này thường được sử dụng khi máy chủ không muốn tiết lộ chính xác lý do tại sao yêu cầu bị từ chối hoặc khi không có phản hồi nào khác được áp dụng.
Tất nhiên, để làm cho việc che giấu đó có hiệu quả, trang lỗi 404 bạn trả về cần phải xuất hiện giống hệt với những gì bạn trả lại cho các trang không tồn tại thực tế . Nếu không, nó sẽ chỉ đánh lừa những kẻ tấn công ngu ngốc và bình thường nhất. (Nếu mục tiêu của bạn chỉ là để các trang nằm ngoài chỉ mục của Google, thì phản hồi 403 cũng sẽ làm điều đó.)
Điều gì về các câu trả lời có thể khác được đề xuất trong câu hỏi của bạn và các câu trả lời khác?
Như tôi đã lưu ý trước đó, tôi không tin rằng một phản hồi 401 là phù hợp ở đây. Nó có thể hoạt động trên thực tế, trong chừng mực vì hầu hết các trình duyệt và công cụ tìm kiếm sẽ đối xử với bất kỳ mã phản hồi sê-ri 4 xx không đúng hoặc không được nhận dạng như là 404, nhưng nó vẫn không hợp lệ theo thông số HTTP và không có lý do thực tế nào để thích nó trên 403 hoặc 404.
Đối với việc sử dụng chuyển hướng 301 (hoặc 302) đến một trang "lỗi 404" riêng biệt, đó là một thực tiễn khủng khiếp được lan truyền bởi các hướng dẫn mod_rewrite cẩu thả và hoàn toàn không có tính năng đổi thưởng so với trả lại trực tiếp phản hồi 404:
Thật khó hiểu cho khách truy cập, vì URL mà họ đang cố truy cập bị thay thế bởi URL của trang lỗi. Do đó, họ thấy một thông báo nói rằng họ đã truy cập một trang không tồn tại, nhưng không có dấu hiệu dễ thấy nào về trang mà họ đang cố truy cập và vì vậy không thể dễ dàng thử bất kỳ chiến lược khôi phục nào như sửa bất kỳ lỗi chính tả rõ ràng nào trong URL, hoặc sao chép và dán nó vào Google hoặc Wayback Machine.
Nó có thể gây nhầm lẫn cho các công cụ tìm kiếm, đặc biệt là nếu trang 404 của bạn không được phép trong tệp robots.txt hoặc nếu nó trả về không đúng phản hồi 200 OK thay vì mã trạng thái 404 thực ( "mềm 404" ), có khả năng khiến trang 404 của bạn xuất hiện trong tìm kiếm kết quả cho các cụm từ tìm kiếm ngẫu nhiên.
Nó gây ra (một lượng nhỏ) tải thêm trên máy chủ của bạn, tăng thời gian phản hồi cho khách truy cập và có khả năng làm chậm công cụ tìm kiếm thu thập dữ liệu trang web của bạn, vì mọi yêu cầu cho một trang không tồn tại (hoặc bị che giấu) hiện đều có thêm một vòng HTTP chuyến đi.
Nó không có lợi ích SEO, vì bất kỳ "liên kết nước trái cây" nào từ các trang được chuyển hướng đến một trang 404 đều bị mất.
(Tất nhiên, một trong những tình huống mà bạn làm muốn sử dụng một chuyển hướng 301 thay vì một phản ứng 404 là khi trang thực sự đã di chuyển, và bạn có thể chuyển hướng người truy cập vào vị trí đúng của nó. Tuy nhiên, đó không phải là trường hợp thảo luận ở đây.)
Cuối cùng, tôi muốn nhắc lại tình cảm, được thể hiện trong nhiều bình luận ở đây, rằng chỉ "che giấu" các trang quản trị của bạn như thế này không phải là sự thay thế thích hợp cho xác thực dựa trên mật khẩu thích hợp . Điều đó nói rằng, nếu bạn đã có một hệ thống xác thực an toàn được thiết lập, việc ẩn các trang có thể hữu ích như một lớp bổ sung, mặc dù là một lớp khá yếu, theo cách tiếp cận chuyên sâu .