El código de respuesta HTTP semánticamente correcto para esta situación sería 403 Prohibido :
El servidor entendió la solicitud, pero se niega a cumplirla. La autorización no ayudará y la solicitud NO DEBE repetirse. Si el método de solicitud no era HEAD y el servidor desea hacer público el motivo por el cual la solicitud no se ha cumplido, DEBERÍA describir el motivo del rechazo en la entidad. Si el servidor no desea que esta información esté disponible para el cliente, se puede usar el código de estado 404 (No encontrado).
(Aunque la definición de la respuesta 403 dice que "la autorización no ayudará", en mi opinión, esto debe entenderse que se refiere específicamente a la autenticación HTTP Basic / Digest , para lo cual se debe usar el código de estado 401 No autorizado en su lugar. Ya que no está usando cualquiera de esos métodos de autenticación, 403 es el código de estado apropiado en su caso).
Sin embargo, el uso de un código de estado 403 revela (o al menos fuertemente implica) el hecho de que no es una página con URL que, a pesar de que el servidor se niega a entregarlo. Como esto es algo que es posible que desee ocultar a posibles intrusos, el estándar HTTP / 1.1 permite explícitamente que se devuelva el código de estado 404 No encontrado ( énfasis mío):
El servidor no ha encontrado nada que coincida con el URI de solicitud. No se indica si la condición es temporal o permanente. El código de estado 410 (Gone) DEBE usarse si el servidor sabe, a través de algún mecanismo internamente configurable, que un recurso antiguo no está disponible permanentemente y no tiene dirección de reenvío.
Este código de estado se usa comúnmente cuando el servidor no desea revelar exactamente por qué se rechazó la solicitud o cuando no se aplica ninguna otra respuesta.
Por supuesto, para que esta ocultación sea efectiva, la página de error 404 que devuelva debe ser idéntica a la que devuelve para las páginas inexistentes reales . De lo contrario, solo engañará a los atacantes más tontos y casuales. (Si su objetivo es mantener las páginas fuera del índice de Google, una respuesta 403 también lo hará).
¿Qué pasa con las otras posibles respuestas sugeridas en su pregunta y las otras respuestas?
Como señalé anteriormente, no creo que una respuesta 401 sea apropiada aquí. Se puede trabajar en la práctica, en la medida en la mayoría de los navegadores y motores de búsqueda tratará cualquier malformación o no reconocida 4 xx código de respuesta serie como si se tratara de un 404, pero todavía no es válida de acuerdo con los protocolos HTTP especificación, y no hay ninguna razón práctica para preferirlo más de 403 o 404.
En cuanto al uso de una redirección 301 (o 302) a una página separada de "error 404", esa es una práctica horrible difundida por tutoriales mod_rewrite descuidados, y no tiene absolutamente ninguna función de canje en comparación con devolver una respuesta 404 directamente:
Es confuso para los visitantes, ya que la URL que intentaban visitar se reemplaza por la URL de la página de error. Por lo tanto, ven un mensaje que dice que han llegado a una página inexistente, pero no hay una indicación fácilmente visible de cuál era la página que intentaban visitar, por lo que no pueden intentar fácilmente ninguna estrategia de recuperación como corregir cualquier error obvio en la URL, o copiarlo y pegarlo en Google o en la Máquina Wayback.
Puede confundir a los motores de búsqueda, especialmente si su página 404 no está permitida en robots.txt , o si devuelve incorrectamente una respuesta 200 OK en lugar de un código de estado 404 real ( "404 suave" ), lo que podría hacer que su página 404 aparezca en la búsqueda resultados para términos de búsqueda aleatorios.
Causa (una pequeña cantidad) de carga adicional en sus servidores, aumenta el tiempo de respuesta a los visitantes y posiblemente ralentiza los motores de búsqueda que rastrean su sitio, ya que cada solicitud de una página inexistente (u oculta) ahora implica una ronda HTTP adicional. viaje.
No tiene ningún beneficio de SEO, ya que cualquier "enlace de jugo" de las páginas redirigidas a una página 404 se pierde de todos modos.
(Por supuesto, la situación en la que lo hace quiere utilizar un redireccionamiento 301 en lugar de una respuesta 404 es cuando la página en realidad se ha movido, y se puede redirigir al visitante a su ubicación correcta. Pero eso no es el caso discutido aquí.)
Finalmente, me gustaría hacer eco del sentimiento, expresado en muchos comentarios aquí, de que simplemente "ocultar" sus páginas de administrador de esta manera no es un sustituto adecuado para la autenticación adecuada basada en contraseña . Dicho esto, si ya tiene un sistema de autenticación seguro configurado, ocultar las páginas puede ser útil como una capa adicional, aunque sea bastante débil, en un enfoque de defensa en profundidad .