Семантически правильный код ответа HTTP для этой ситуации будет 403 Запрещено :
Сервер понял запрос, но отказывается его выполнить. Авторизация не поможет и запрос НЕ ДОЛЖЕН повторяться. Если метод запроса не был HEAD и сервер желает сообщить, почему запрос не был выполнен, он ДОЛЖЕН описать причину отказа в объекте. Если сервер не желает предоставлять эту информацию клиенту, вместо него можно использовать код состояния 404 (не найден).
(Хотя определение ответа 403 говорит, что «авторизация не поможет», IMO это следует понимать как относящуюся к HTTP Basic / Digest-аутентификации , для которой вместо этого следует использовать код состояния 401 Unauthorized . Поскольку вы не используете любой из этих методов аутентификации, 403 - это соответствующий код состояния в вашем случае.)
Однако, используя код 403 состояния показывает (или по крайней мере сильно подразумевает) тот факт , что это страница с этим URL, даже если сервер отказывается доставить его. Поскольку это то, что вы, возможно, захотите скрыть от потенциальных злоумышленников, стандарт HTTP / 1.1 явно разрешает вместо этого возвращать код состояния 404 Not Found ( выделено мое):
Сервер не нашел ничего, соответствующего Request-URI. Не указано, является ли состояние временным или постоянным. Код состояния 410 (Унесенные) СЛЕДУЕТ использовать, если сервер через некоторый внутренне конфигурируемый механизм знает, что старый ресурс постоянно недоступен и не имеет адреса пересылки.
Этот код состояния обычно используется, когда сервер не хочет точно указывать, почему запрос был отклонен или когда другой ответ не применим.
Конечно, чтобы сделать такое маскирование эффективным, страница с ошибкой 404, которую вы возвращаете, должна выглядеть идентично тому, что вы возвращаете для реальных несуществующих страниц. В противном случае, это обманет только самых глупых и случайных атакующих. (Если ваша цель - просто исключить страницы из индекса Google, ответ 403 сделает то же самое.)
Как насчет других возможных ответов, предложенных в вашем вопросе и других ответах?
Как я отмечал ранее, я не считаю, что ответ 401 уместен здесь. Он может работать на практике, поскольку в большинстве браузеров и поисковые системы будут относиться к любым искаженным или непризнанным 4 хм кодам ответа серии , как если бы он был 404, но она по - прежнему не действует в соответствии с HTTP спецификация, и нет никаких практических причин предпочесть его более 403 или 404.
Что касается использования перенаправления 301 (или 302) на отдельную страницу «Ошибка 404», то это ужасная практика, распространяемая неаккуратными учебниками mod_rewrite, и не имеет абсолютно никаких функций выкупа по сравнению с возвратом ответа 404 напрямую:
Это сбивает с толку посетителей, так как URL, который они пытались посетить, заменяется URL страницы с ошибкой. Таким образом, они видят сообщение о том, что они достигли несуществующей страницы, но не имеют четко видимого указания на то, какой страницей они пытались посетить, и поэтому не могут легко попытаться применить любые стратегии восстановления, такие как исправление любых очевидных опечаток в URL, или скопируйте и вставьте его в Google или Wayback Machine.
Это может сбить с толку поисковые системы, особенно если ваша страница 404 запрещена в файле robots.txt или если она неправильно возвращает ответ 200 OK вместо реального кода состояния 404 ( «soft 404» ), что может привести к тому, что ваша страница 404 появится в поиске результаты для случайных поисковых терминов.
Это вызывает (небольшую) дополнительную нагрузку на ваши серверы, увеличивает время отклика для посетителей и потенциально замедляет поисковые системы, сканирующие ваш сайт, так как каждый запрос на несуществующую (или скрытую) страницу теперь включает дополнительный HTTP-обход поездка.
Это не имеет никакой пользы для SEO, так как любой «сок ссылок» со страниц, перенаправленных на страницу 404, все равно теряется.
(Конечно, одна ситуации , когда вы делаете хочет использовать 301 редирект вместо 404 ответа , когда страница фактически была перемещена, и вы можете перенаправить посетитель на правильное место. Но это не тот случай обсуждается здесь.)
Наконец, я хотел бы повторить мнение, выраженное во многих комментариях, о том, что простое «скрытие» ваших страниц администратора, как это, не является адекватной заменой для правильной аутентификации на основе пароля . Тем не менее, если у вас уже настроена защищенная система аутентификации, скрытие страниц может быть полезным в качестве дополнительного слоя, хотя и довольно слабого, в подходе глубокоэшелонированной защиты .