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