Типова ситуація: сайт перенесено на новий хостинг, головна сторінка працює, а будь-яке посилання всередині повертає 404 Not Found. Майже завжди причина в тому, що не працюють «людинозрозумілі» посилання (ЧПУ), які обробляються правилами переписування URL.
1. Не перенесено файл .htaccess
Файли, що починаються з крапки, приховані, і їх легко пропустити під час копіювання. Перевірте, що .htaccess є в кореневому каталозі сайту. Для WordPress стандартний вміст:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Найпростіше відновити його так: Налаштування → Постійні посилання → Зберегти зміни в адмінці WordPress.
2. Сайт працює на Nginx без Apache
Nginx не читає .htaccess. На VPS з «чистим» Nginx потрібне правило у конфігурації сайту:
location / {
try_files $uri $uri/ /index.php?$args;
}
Після зміни: nginx -t && systemctl reload nginx.
3. Змінився шлях до сайту
Якщо на старому хостингу сайт був у підкаталозі (/shop/), а тепер у корені — або навпаки, — виправте RewriteBase у .htaccess і адресу сайту в налаштуваннях CMS. Для WordPress — опції siteurl і home у таблиці wp_options.
4. Регістр літер у назвах файлів
Windows-сервери не розрізняють Image.jpg і image.jpg, а Linux — розрізняє. Якщо 404 повертають лише окремі картинки або скрипти, перевірте регістр у назвах.
Перевірка
Перевірити, що конкретна адреса повертає код 200, а не 404 чи ланцюжок переадресацій, можна нашим інструментом перевірки переадресацій. Детальна інструкція з переїзду — у статтях для ISPmanager і для cPanel.