404 ошибки на работающих ссылках: причины и фикс
Linked URL возвращает 404, хотя страница работает. Кеши, редиректы, права доступа — где искать.
Симптом
- При переходе по ссылке в браузере появляется страница 404, хотя URL открывается в других местах (например, в админке или при прямом вводе).
- В логах веб‑сервера виден статус 404 для конкретного запроса, но при повторном запросе через адресную строку страница загружается.
- Внутренние ссылки (на сайте) ведут на 404, но внешние ссылки (со ссылок в соцсетях) работают.
- При проверке через инструменты вроде
curlилиwgetвозвращается 404, а при открытии в браузере — 200. - Иногда 404 появляется только в определённых браузерах/устройствах, но не в остальных.
- В консоли разработчика виден
404для ресурса, но в сети (Network) статус 200.
Причина
-
Кеширование
- Веб‑сервер (nginx, Apache) или CDN (Cloudflare, Akamai) хранит старую запись о том, что ресурс отсутствует.
- Браузер может использовать кеш‑заголовкиCache-Control: no-storeилиExpiresи отдавать 404 из кеша. -
Редиректы и правила .htaccess / nginx
- Неправильные правила переписывания (RewriteRule,try_files) могут вернуть 404, если файл не найден в файловой системе, но URL корректен.
- При использовании CMS (WordPress, Drupal) плагины могут генерировать временные 404 до обновления кэша. -
Права доступа
- Файл существует, но у веб‑процесса нет прав читать его (chmod 644,chown www-data).
- В случае с Nginx, еслиrootуказывает на неверную директорию, запрос попадает в другую папку и 404. -
Проблемы с файловой системой
- Символические ссылки (symlink) могут быть разорваны.
- Файлы могут быть удалены, но ссылки в базе данных остаются. -
Проблемы с DNS / балансировкой нагрузки
- Один из серверов в пуле возвращает 404, другие — 200.
Как проверить
-
Проверка логов
bash tail -f /var/log/nginx/access.log tail -f /var/log/nginx/error.logИщите строки с404и сопоставляйте их с временем запроса. -
Проверка кеша
bash curl -I https://example.com/your-pageОбратите внимание на заголовкиCache-Control,Expires,ETag. -
Проверка прав доступа
bash ls -l /var/www/html/your-pageУбедитесь, что владелец и права позволяют веб‑пользователю читать файл. -
Проверка правил переписывания
- Для nginx:nginx location / { try_files $uri $uri/ /index.php?$args; }- Для Apache (.htaccess):apache RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]Убедитесь, что правила не конфликтуют. -
Проверка файловой системы
bash find /var/www/html -type l -exec ls -l {} \;Ищите разорванные symlink. -
Проверка балансировщика
- Если используется HAProxy:bash echo "show stat" | socat stdio /var/run/haproxy.sock- Смотрите, не возвращает ли один сервер 404.
Решение
-
Очистить кеш
- nginx:
bash sudo systemctl reload nginx- CDN: в панели управления очистите кеш для конкретного пути.
- Браузер:Ctrl+F5или очистка кеша. -
Проверить и поправить правила переписывания
- Убедитесь, чтоtry_filesуказывает на правильный путь.
- Если используется CMS, отключите временно плагины, которые могут влиять на маршрутизацию. -
Восстановить права доступа
bash sudo chown -R www-data:www-data /var/www/html sudo find /var/www/html -type d -exec chmod 755 {} \; sudo find /var/www/html -type f -exec chmod 644 {} \; -
Проверить и восстановить symlink
bash ln -s /var/www/html/real-folder /var/www/html/link -
Проверить балансировщик
- Перезапустите балансировщик, убедитесь, что все узлы здоровы.
- Если один узел возвращает 404, проверьте его логи и файловую систему. -
Проверить конфигурацию CDN
- Убедитесь, что правила кеширования не блокируют динамические страницы.
- Включите режим разработки (debug) и посмотрите, какие заголовки приходят от CDN. -
Проверка через инструменты разработчика
- Откройте вкладкуNetwork, выберите запрос, посмотрите статус и заголовки.
- Если статус 404, но вResponseвиден контент, значит сервер вернул 404, но браузер отобразил страницу.
После выполнения этих шагов проблема с 404 на работающих ссылках должна исчезнуть. Если ошибка сохраняется, проверьте логи более подробно и убедитесь, что нет конфликтов между сервером, CDN и балансировщиком.
Связанные
Не хотите разбираться сами?
Запустите технический аудит сайта за 5 минут — получите PDF-отчёт с разбором всех 64 параметров и конкретными точками роста. Или закажите комплексное SEO-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.