Семантично правильний код відповіді HTTP для цієї ситуації буде 403 Заборонено :
Сервер зрозумів запит, але відмовляється його виконувати. Авторизація не допоможе, і запит НЕ повинен повторюватися. Якщо метод запиту не був HEAD і сервер бажає оприлюднити, чому запит не був виконаний, він ДОЛЖЕН описувати причину відмови в організації. Якщо сервер не бажає надавати цю інформацію клієнту, замість цього може використовуватися код статусу 404 (Не знайдено).
(Хоча визначення відповіді 403 говорить про те, що "авторизація не допоможе", під IMO це слід розуміти як посилання на специфічну автентифікацію HTTP Basic / Digest , для якої слід використовувати код стану 401 Несанкціонований . Оскільки ви не використовуєте будь-який із цих методів аутентифікації, 403 - це відповідний код статусу у вашому випадку.)
Однак, використовуючи код 403 стану показує (або принаймні сильно має на увазі) той факт , що це сторінка з цим URL, навіть якщо сервер відмовляється доставити його. Оскільки це щось, що ви хочете приховати від потенційних зловмисників, стандарт HTTP / 1.1 явно дозволяє замість цього повернути код статусу 404 Not Found ( мій акцент ):
Сервер не знайшов нічого, що відповідає Request-URI. Не вказується, чи є стан тимчасовим чи постійним. Код стану 410 (Зникло) ПОТРІБНО використовуватись, якщо сервер через якийсь внутрішньо налаштований механізм знає, що старий ресурс постійно недоступний і не має адреси переадресації.
Цей код статусу зазвичай використовується, коли сервер не бажає виявити, чому саме в запиті відхилено, або коли інша відповідь не застосовується.
Звичайно, щоб зробити таке приховування взагалі ефективним, сторінка з помилками 404, яку ви повертаєте, повинна виглядати ідентично тому, що ви повертаєте на фактично неіснуючі сторінки. В іншому випадку це лише обдурить найбезглуздіших і найбільш випадкових нападників. (Якщо ваша мета - просто утримати сторінки поза індексом Google, відповідь 403 зробить це так само добре.)
Як щодо інших можливих відповідей, запропонованих у вашому запитанні, та інших відповідей?
Як я вже зазначав, я не вірю, що відповідь 401 тут доречна. Це може спрацювати на практиці, якщо більшість браузерів та пошукових систем будуть ставитись до будь-якого неправильного або невпізнаного коду відповіді серії 4 xx так, як якщо б це був 404, але він все ще не дійсний відповідно до специфікації HTTP, і немає жодної практичної причини віддати перевагу цьому понад 403 або 404.
Що стосується використання переадресації 301 (або 302) на окрему сторінку "404 помилка", це жахлива практика, поширена неохайними навчальними посібниками mod_rewrite, і не має абсолютно ніяких функцій викупу в порівнянні з поверненням відповіді 404 безпосередньо:
Для відвідувачів це заплутано, оскільки URL-адреса, яку вони намагалися відвідати, замінюється URL-адресою сторінки помилок. Таким чином, вони бачать повідомлення про те, що вони дійшли до неіснуючої сторінки, але не було легко помітного вказівки на те, якою була сторінка, яку вони намагалися відвідати, і тому не можуть легко спробувати будь-які стратегії відновлення, такі як виправлення явних помилок в URL-адресі, або скопіюйте та вставте його в Google або на Wayback Machine.
Це може заплутати пошукові системи, особливо якщо ваша сторінка 404 заборонена в robots.txt або якщо вона неправильно повертає відповідь на 200 ОК замість реального коду статусу 404 ( "soft 404" ), що може спричинити появу вашої сторінки 404 у пошуку результати для випадкових пошукових термінів.
Це спричиняє (невелику кількість) додаткове навантаження на ваші сервери, збільшує час відгуку відвідувачів і потенційно сповільнює пошукові системи, що сканують ваш сайт, оскільки кожен запит на неіснуючу (або приховану) сторінку тепер включає додатковий HTTP-раунд, поїздка.
Це не має ніякої користі для SEO, оскільки будь-який "сік для посилань" зі сторінок, перенаправлених на сторінку 404, втрачається в будь-якому випадку.
(Звичайно, одна ситуації , коли ви робите хоче використовувати 301 редирект замість 404 відповіді , коли сторінка фактично була переміщена, і ви можете перенаправити відвідувач на правильне місце. Але це не той випадок обговорюється тут.)
Нарешті, я хотів би повторити почуття, висловлені в багатьох коментарях тут, що просто "приховування" сторінок вашого адміністратора, як це, не є адекватною заміною правильної автентифікації на основі пароля . Однак, якщо у вас вже створена захищена система аутентифікації, приховування сторінок може бути корисним як додатковий шар, хоч і досить слабкий, як захист у глибині підходу.