Apache Linux (Apache HTTP Server 2.4)

Apache — после смены домена статика загружается с прежнего адреса

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

После смены домена HTML открывается на новом адресе, но CSS, изображения и JavaScript продолжают загружаться с прежнего. Apache может отдавать корректный HTML, а старые абсолютные URL находиться в шаблонах приложения, базе данных, перенаправлениях или CDN. Не начинайте с массовой замены строк в SQL без понимания формата данных.

В этой статье
  1. Симптом и границы применимости
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Как проверить результат
  5. Если проблема не устранена

#Симптом и границы применимости

После смены домена HTML открывается на новом адресе, но CSS, изображения и JavaScript продолжают загружаться с прежнего. Apache может отдавать корректный HTML, а старые абсолютные URL находиться в шаблонах приложения, базе данных, перенаправлениях или CDN. Не начинайте с массовой замены строк в SQL без понимания формата данных.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Старый адрес жёстко записан в коде или базеБраузер запрашивает именно то, что указано в HTML.В исходном HTML ссылки src/href содержат прежний доменИскать источник URL в шаблоне/настройках приложения
Перенаправляет ApacheПравило виртуального хоста может менять адрес даже при правильном HTML.Запрос к новой статике возвращает Location старого доменаПроверить Redirect и RewriteRule нужного пути
Кэш CDN или браузераСтарые ссылки могут содержаться в закэшированном HTML/CSS.С origin файлы правильные, публично старыеПроверить конкретные ключи кэша и заголовки

#Пошаговая диагностика и исправление

  1. Определите источник старой ссылкиОткройте страницу в браузере, нажмите F12 → «Сеть» и обновите её. Найдите ресурс со старым доменом. На вкладке «Инициатор» или в исходном HTML посмотрите, откуда возник запрос: тег link, script, CSS url() или перенаправление. Сохраните точный URL без токенов.
  1. Проверьте ответ проблемного ресурсаОткройте URL ресурса напрямую в режиме без кэша и посмотрите код Location. Если новый URL возвращает 301 на старый, ищите редирект; если сам HTML указывает старый адрес, исправлять нужно генератор HTML.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    Клиентская консоль Linux/macOS или Windows с grep; домен и путь замените; HEAD иногда отличается от GET.
    curl -sSI https://new.example.com/assets/site.css | grep -Ei "^HTTP/|^location:|^cache-control:"
  1. Сверьте VirtualHost после миграцииВ SSH запустите apache2ctl -S. Найдите активный VirtualHost, соответствующий новому имени и порту; проверьте ServerName/ServerAlias, DocumentRoot и возможный Redirect. Если Apache за Nginx, сопоставьте настройку обоих слоёв.
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian и другие установки Apache 2.4, в некоторых системах нужен apachectl -S.
    sudo apache2ctl -S
  1. Проверьте правила перенаправления в ApacheОткройте конфигурацию нужного сайта и его .htaccess при AllowOverride. Ищите старое имя в Redirect, RewriteRule, RewriteCond, Alias и параметрах прокси. На этом этапе безопасно только искать; не используйте глобальную замену по всем конфигам.
  2. Debian пример, подставьте старый домен
    Linux · Терминал (Bash)КомандаНужен sudo
    Debian пример, подставьте старый домен. Поиск в конфигурации может найти и намеренные редиректы.
    sudo grep -R -n "old.example.com" /etc/apache2/sites-enabled/
  1. Проверьте адрес в системе управления сайтомПосмотрите настройки базового URL приложения. В WordPress это может быть «Настройки → Общие» при достаточных правах, в другом движке — собственные параметры. В serialized-данных PHP и некоторых структурах базы простая SQL-замена может повредить длины строк — используйте штатный механизм миграции и резервную копию БД.
  1. Исправьте адрес в установленном источникеЕсли старая ссылка в шаблоне — измените шаблон и соберите ресурсы штатно. Если она в .htaccess или VirtualHost — сохраните конфиг, исправьте одно правило, проверьте Syntax OK и reload. Если контент кэшируется, сначала убедитесь, что origin отдаёт новое, затем очистите конкретный кэш.
  2. Debian: только после изменения системной конфигурации
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Debian: только после изменения системной конфигурации. Изменение содержимого HTML обычно не требует reload.
    sudo apache2ctl -t && sudo systemctl reload apache2

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить результат

В исходном HTML и сетевых запросах больше нет случайных ссылок на старый домен, статические ресурсы отвечают 200 с верным Content-Type, смешанный HTTP/HTTPS-контент отсутствует. Проверены страницы, подкаталоги и мобильная версия.

#Если проблема не устранена

Если источник старой ссылки — сборщик CSS/JS или CDN, пересоберите ресурсы/очистите относящийся к ним кэш. Не удаляйте редирект старого домена целиком: он может требоваться для SEO и пользователей.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.