Нерабочие внутренние ссылки в WordPress — распространённая проблема, которая негативно влияет на SEO и удобство пользователей. Часто это проявляется в виде 404 ошибок, неправильного перенаправления или отсутствия перехода по ссылке. В этой статье мы подробно рассмотрим, почему возникают такие сбои, как их диагностировать и исправлять с помощью кода и плагинов.
Основные причины неработающих внутренних ссылок в WordPress
Нерабочие ссылки могут быть вызваны разными причинами:
- Изменение структуры постоянных ссылок (Permalinks) без обновления ссылок в контенте.
- Удаление или перемещение страниц и записей без корректного перенаправления.
- Ошибки в .htaccess или конфликт с правилами перезаписи (rewrite rules).
- Вмешательство плагинов, например, кэширования или SEO, которые могут изменять URL.
- Проблемы с мультиязычностью или плагинами для перевода.
Чтобы эффективно решать проблему, нужно системно анализировать ситуацию и применять разные подходы.
Диагностика и проверка внутренних ссылок
Первый шаг — выявить, какие именно ссылки не работают. Для этого используйте специализированные инструменты:
- Broken Link Checker — плагин для WordPress, который автоматически сканирует сайт на наличие битых ссылок и выводит отчёт.
- Screaming Frog SEO Spider — десктопное приложение, позволяющее провести глубокий анализ сайта, включая внутренние ссылки.
- Google Search Console — раздел «Покрытие» и «Проблемы с индексированием» показывает ошибки 404 и другие проблемы.
После выявления битых ссылок важно понять, почему они не работают. Часто причина кроется в неправильных правилах перезаписи или изменениях в структуре URL.
Исправление структуры постоянных ссылок и обновление .htaccess
Ошибки в постоянных ссылках — частая причина проблем с внутренними ссылками. Чтобы проверить и исправить их, выполните следующие шаги:
- Перейдите в
Настройки » Постоянные ссылкив админке WordPress. - Сделайте резервную копию файла
.htaccessчерез FTP. - Выберите нужную структуру ссылок и сохраните настройки, чтобы WordPress автоматически обновил правила перезаписи.
Если проблема не ушла, проверьте содержимое .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
Если в вашем .htaccess есть лишние или конфликтующие правила, попробуйте временно их отключить, чтобы проверить, решит ли это проблему.
Использование плагина Redirection для корректных перенаправлений
Если внутренние ссылки ведут на удалённые или изменённые страницы, правильным решением будет настроить перенаправления 301. Для этого отлично подходит плагин Redirection.
Плагин позволяет:
- Создавать перенаправления вручную и массово.
- Отслеживать 404 ошибки и автоматически предлагать исправления.
- Использовать регулярные выражения для гибкой настройки правил.
Пример настройки перенаправления с помощью API плагина Redirection:
function wpdebug_add_redirection() {
if ( function_exists( 'redirection_add_redirect' ) ) {
redirection_add_redirect(
array(
'source_url' => '/staraya-stranica',
'target_url' => '/novaya-stranica',
'regex' => false,
'status_code' => 301
)
);
}
}
add_action( 'init', 'wpdebug_add_redirection' );
Исправление ссылок в базе данных с помощью WP-CLI
Если ссылки изменились из-за смены домена или структуры, вручную править все записи невозможно. Здесь на помощь приходит WP-CLI — мощный инструмент для работы с WordPress из командной строки.
Пример замены старых URL на новые во всех записях:
wp search-replace 'http://oldsite.com' 'http://newsite.com' --skip-columns=guid
Важно использовать опцию --skip-columns=guid, чтобы не повредить уникальные идентификаторы записей.
Код для автоматической проверки и исправления внутренних ссылок в контенте
Иногда полезно добавить функцию, которая проверяет внутренние ссылки при сохранении записи и исправляет их. Вот пример такой функции, которую можно добавить в файл functions.php вашей темы или в кастомный плагин:
function wpdebug_fix_internal_links( $content ) {
$old_url = 'http://oldsite.com';
$new_url = 'http://newsite.com';
return str_replace( $old_url, $new_url, $content );
}
add_filter( 'the_content', 'wpdebug_fix_internal_links' );
Эта функция при выводе контента заменит старые URL на новые, что временно решит проблему с неработающими ссылками, пока вы не обновите базу данных.
Плагины для улучшения управления внутренними ссылками
Кроме Redirection и Broken Link Checker, рекомендуем обратить внимание на следующие плагины:
- Internal Links Manager — помогает автоматически создавать и управлять внутренними ссылками для улучшения SEO.
- Yoast SEO — помимо SEO-оптимизации, содержит инструменты для анализа и улучшения структуры сайта, включая внутренние ссылки.
- Clearfy Pro — оптимизирует работу WordPress и может помочь с исправлением ссылок благодаря расширенным настройкам.
Советы по предотвращению проблем с внутренними ссылками
Чтобы не сталкиваться с нерабочими внутренними ссылками, придерживайтесь следующих рекомендаций:
- Перед изменением структуры постоянных ссылок создавайте резервные копии сайта и базы данных.
- Используйте перенаправления 301 при удалении или перемещении страниц.
- Регулярно сканируйте сайт на предмет битых ссылок с помощью плагинов или внешних сервисов.
- Избегайте прямого вставления жестко закодированных URL в контент, используйте функции WordPress для генерации ссылок (например,
get_permalink()). - Автоматизируйте обновление ссылок при смене домена с помощью WP-CLI.