401 Unauthorized: что это и как влияет на SEO
Что такое HTTP-статус 401, как он отличается от 403, как влияет на индексацию Googlebot и что делать при его появлении на публичных страницах.
401 Unauthorized — HTTP-код ответа, который сервер возвращает, когда запрос не прошёл аутентификацию: пользователь не предоставил учётные данные или они не прошли проверку. Это не запрет на доступ (как у 403) — это приглашение авторизоваться.
Что такое 401 Unauthorized
401 Unauthorized — это HTTP-статус из группы 4xx (ошибки клиента), который сервер возвращает, когда запрос требует аутентификации, но она не была предоставлена или не прошла проверку. Вместе со статусом сервер обычно отправляет заголовок WWW-Authenticate, указывающий, какой способ аутентификации принять.
Само название «Unauthorized» немного вводит в заблуждение: на самом деле речь идёт об отсутствии аутентификации, а не авторизации. Точнее было бы «Unauthenticated» — именно такое значение закреплено в RFC 9110.
401 vs 403: в чём разница
Оба кода означают отказ в доступе, но по разным причинам:
| Параметр | 401 Unauthorized | 403 Forbidden |
|---|---|---|
| Причина отказа | Аутентификация не пройдена или не предоставлена | Доступ запрещён вне зависимости от авторизации |
| Что знает сервер о пользователе | Ничего — пользователь не представился | Пользователь известен, но у него нет прав |
| Ответ на вопрос «Кто вы?» | Вы не ответили или ответили неверно | Вы известны, но вам сюда нельзя |
| Повторный запрос с кредами | Может сработать | Не поможет — нужны другие права |
| Пример | Защищённая паролем страница без авторизации | Страница только для администраторов |
Влияние на SEO и индексацию
Когда Googlebot запрашивает URL и получает в ответ 401, он не может прочитать содержимое страницы. Результат — страница не индексируется или исключается из индекса. Если 401 появляется на публичных страницах, это серьёзная SEO-проблема:
- Страница теряет позиции и выпадает из индекса в течение нескольких недель.
- Краулинговый бюджет расходуется впустую: робот обходит URL, но ничего не получает.
- Ссылочный вес, ведущий на заблокированные страницы, не передаётся дальше.
- В Google Search Console появятся ошибки в разделе «Покрытие» → «Исключённые страницы».
группа ошибок
Ошибки на стороне клиента
код — авторизуйтесь
Запрашивает аутентификацию
код — запрещено
Не поможет ни авторизация, ни кредиты
контента Googlebot
Страница не индексируется при 401
Типичные причины появления 401 на публичных страницах
- HTTP Basic Auth на всём сайте или разделе. Часто настраивают на стейджинге, а потом забывают убрать перед релизом или случайно применяют к продакшн-среде.
- Неверно настроенный CDN или обратный прокси. Промежуточный слой требует токен или подпись, которую Googlebot не знает.
- Устаревшие токены API. Страницы, генерируемые через API с истёкшим ключом, возвращают 401 вместо контента.
- Ошибка в коде приложения. Middleware или guard случайно требует авторизацию там, где её не должно быть.
- WordPress или другой CMS после обновления. Плагины защиты контента могут сменить настройки при обновлении.
Как устранить 401 на публичных страницах
Алгоритм диагностики и устранения:
- Найдите проблемные URL через Google Search Console → «Покрытие» или через краулер (Screaming Frog).
- Проверьте код ответа через curl — убедитесь, что проблема воспроизводится.
- Определите, где настроена аутентификация: сервер (Apache/Nginx), CDN, middleware приложения.
- Снимите требование аутентификации с публичных URL или добавьте исключение для них.
- Если стейджинг нужно защитить — добавьте robots.txt с
Disallow: /или ограничьте доступ по IP.
# Проверка кода ответа
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/page
# Ожидаемый результат: 200 (или 301/302)
# Если видите 401 — есть проблема
# Проверка с Basic Auth
curl -u login:password -o /dev/null -s -w "%{http_code}\n" https://example.com/page# Apache — защита директории с исключением для публичных страниц
<Directory /var/www/html/admin>
AuthType Basic
AuthName "Admin Area"
AuthUserFile /etc/.htpasswd
Require valid-user
</Directory>
# Публичные страницы НЕ трогаем — они доступны без авторизации# Nginx — Basic Auth только для /admin, публичные страницы открыты
server {
# Открытый раздел
location / {
try_files $uri $uri/ =404;
}
# Закрытый раздел
location /admin/ {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}// Next.js — API route с правильным 401
import { NextRequest, NextResponse } from 'next/server';
export async function GET(request: NextRequest) {
const token = request.headers.get('authorization');
if (!token || !isValidToken(token)) {
return NextResponse.json(
{ error: 'Authentication required' },
{
status: 401,
headers: { 'WWW-Authenticate': 'Bearer realm="API"' },
}
);
}
return NextResponse.json({ data: 'protected content' });
}Нашли 401 на публичных страницах?
Расскажите о проекте — проведём технический SEO-аудит и найдём все точки блокировки краулера.
Частые вопросы
Disallow: / или заблокируйте стейджинг по IP. 401 не гарантирует полной защиты — Googlebot иногда игнорирует Basic Auth и пробует перейти по ссылкам. Лучшая практика: robots.txt + Basic Auth вместе.Обсудим ваш проект?
Расскажите о целях и сайте — предложу формат работы и следующий шаг.