Вопрос или проблема
Несколько дней после установки 6.1.1 некоторые страницы начали перенаправляться на главную страницу. Я переименовал .htaccess, отключил все плагины и использую стандартную тему 2022, чтобы попытаться найти источник 301, но безуспешно. Я проверил curl и обнаружил, что источник перенаправления был помечен как “Wordpress”. Тогда я остановил перенаправление и вывел debug_backtrace, чтобы наконец найти эту вещь. Полагаю, где-то задан канонический URL, но не могу понять, где именно. Любая страница с URL https://stgtrulite.wpengine.com/platform/[anything] получает 301 к https://stgtrulite.wpengine.com. Остальная часть сайта работает, и я могу изменить URL на затронутых страницах, но Google уже индексировал их с этим URL.
Кто-нибудь может мне помочь? Вот дамп:
Redirect attempted to location: https://stgtrulite.wpengine.com/
Array
(
[0] => Array
(
[file] => /nas/content/live/stgtrulite/wp-includes/canonical.php
[line] => 801
[function] => wp_redirect
[args] => Array
(
[0] => https://stgtrulite.wpengine.com/
[1] => 301
)
)
[1] => Array
(
[file] => /nas/content/live/stgtrulite/wp-includes/class-wp-hook.php
[line] => 308
[function] => redirect_canonical
[args] => Array
(
[0] => https://stgtrulite.wpengine.com/platform/xxx
)
)
[2] => Array
(
[file] => /nas/content/live/stgtrulite/wp-includes/class-wp-hook.php
[line] => 332
[function] => apply_filters
[class] => WP_Hook
[object] => WP_Hook Object
(
[callbacks] => Array
(
[0] => Array
(
[_wp_admin_bar_init] => Array
(
[function] => _wp_admin_bar_init
[accepted_args] => 1
)
)
[10] => Array
(
[wp_old_slug_redirect] => Array
(
[function] => wp_old_slug_redirect
[accepted_args] => 1
)
[redirect_canonical] => Array
(
[function] => redirect_canonical
[accepted_args] => 1
)
[0000000026d0f2cb000000001a0eef68render_sitemaps] => Array
(
[function] => Array
(
[0] => WP_Sitemaps Object
(
[index] => WP_Sitemaps_Index Object
(
[registry:protected] => WP_Sitemaps_Registry Object
(
[providers:WP_Sitemaps_Registry:private] => Array
(
[posts] => WP_Sitemaps_Posts Object
(
[name:protected] => posts
[object_type:protected] => post
)
[taxonomies] => WP_Sitemaps_Taxonomies Object
(
[name:protected] => taxonomies
[object_type:protected] => term
)
[users] => WP_Sitemaps_Users Object
(
[name:protected] => users
[object_type:protected] => user
)
)
)
[max_sitemaps:WP_Sitemaps_Index:private] => 50000
)
[registry] => WP_Sitemaps_Registry Object
(
[providers:WP_Sitemaps_Registry:private] => Array
(
[posts] => WP_Sitemaps_Posts Object
(
[name:protected] => posts
[object_type:protected] => post
)
[taxonomies] => WP_Sitemaps_Taxonomies Object
(
[name:protected] => taxonomies
[object_type:protected] => term
)
[users] => WP_Sitemaps_Users Object
(
[name:protected] => users
[object_type:protected] => user
)
)
)
[renderer] => WP_Sitemaps_Renderer Object
(
[stylesheet:protected] =>
[stylesheet_index:protected] =>
)
)
[1] => render_sitemaps
)
[accepted_args] => 1
)
)
[11] => Array
(
[rest_output_link_header] => Array
(
[function] => rest_output_link_header
[accepted_args] => 0
)
[wp_shortlink_header] => Array
(
[function] => wp_shortlink_header
[accepted_args] => 0
)
)
[1000] => Array
(
[wp_redirect_admin_locations] => Array
(
[function] => wp_redirect_admin_locations
[accepted_args] => 1
)
)
[99999] => Array
(
[0000000026d0f112000000001a0eef68is_404] => Array
(
[function] => Array
(
[0] => WpeCommon Object
(
[options:protected] =>
)
[1] => is_404
)
[accepted_args] => 1
)
)
)
[iterations:WP_Hook:private] => Array
(
[0] => Array
(
[0] => 0
[1] => 10
[2] => 11
[3] => 1000
[4] => 99999
)
)
[current_priority:WP_Hook:private] => Array
(
[0] => 10
)
[nesting_level:WP_Hook:private] => 1
[doing_action:WP_Hook:private] => 1
)
[type] => ->
[args] => Array
(
[0] =>
[1] => Array
(
[0] =>
)
)
)
[3] => Array
(
[file] => /nas/content/live/stgtrulite/wp-includes/plugin.php
[line] => 517
[function] => do_action
[class] => WP_Hook
[object] => WP_Hook Object
(
[callbacks] => Array
(
[0] => Array
(
[_wp_admin_bar_init] => Array
(
[function] => _wp_admin_bar_init
[accepted_args] => 1
)
)
[10] => Array
(
[wp_old_slug_redirect] => Array
(
[function] => wp_old_slug_redirect
[accepted_args] => 1
)
[redirect_canonical] => Array
(
[function] => redirect_canonical
[accepted_args] => 1
)
[0000000026d0f2cb000000001a0eef68render_sitemaps] => Array
(
[function] => Array
(
[0] => WP_Sitemaps Object
(
[index] => WP_Sitemaps_Index Object
(
[registry:protected] => WP_Sitemaps_Registry Object
(
[providers:WP_Sitemaps_Registry:private] => Array
(
[posts] => WP_Sitemaps_Posts Object
(
[name:protected] => posts
[object_type:protected] => post
)
[taxonomies] => WP_Sitemaps_Taxonomies Object
(
[name:protected] => taxonomies
[object_type:protected] => term
)
[users] => WP_Sitemaps_Users Object
(
[name:protected] => users
[object_type:protected] => user
)
)
)
[max_sitemaps:WP_Sitemaps_Index:private] => 50000
)
[registry] => WP_Sitemaps_Registry Object
(
[providers:WP_Sitemaps_Registry:private] => Array
(
[posts] => WP_Sitemaps_Posts Object
(
[name:protected] => posts
[object_type:protected] => post
)
[taxonomies] => WP_Sitemaps_Taxonomies Object
(
[name:protected] => taxonomies
[object_type:protected] => term
)
[users] => WP_Sitemaps_Users Object
(
[name:protected] => users
[object_type:protected] => user
)
)
)
[renderer] => WP_Sitemaps_Renderer Object
(
[stylesheet:protected] =>
[stylesheet_index:protected] =>
)
)
[1] => render_sitemaps
)
[accepted_args] => 1
)
)
[11] => Array
(
[rest_output_link_header] => Array
(
[function] => rest_output_link_header
[accepted_args] => 0
)
[wp_shortlink_header] => Array
(
[function] => wp_shortlink_header
[accepted_args] => 0
)
)
[1000] => Array
(
[wp_redirect_admin_locations] => Array
(
[function] => wp_redirect_admin_locations
[accepted_args] => 1
)
)
[99999] => Array
(
[0000000026d0f112000000001a0eef68is_404] => Array
(
[function] => Array
(
[0] => WpeCommon Object
(
[options:protected] =>
)
[1] => is_404
)
[accepted_args] => 1
)
)
)
[iterations:WP_Hook:private] => Array
(
[0] => Array
(
[0] => 0
[1] => 10
[2] => 11
[3] => 1000
[4] => 99999
)
)
[current_priority:WP_Hook:private] => Array
(
[0] => 10
)
[nesting_level:WP_Hook:private] => 1
[doing_action:WP_Hook:private] => 1
)
[type] => ->
[args] => Array
(
[0] => Array
(
[0] =>
)
)
)
[4] => Array
(
[file] => /nas/content/live/stgtrulite/wp-includes/template-loader.php
[line] => 13
[function] => do_action
[args] => Array
(
[0] => template_redirect
)
)
[5] => Array
(
[file] => /nas/content/live/stgtrulite/wp-blog-header.php
[line] => 19
[args] => Array
(
[0] => /nas/content/live/stgtrulite/wp-includes/template-loader.php
)
[function] => require_once
)
[6] => Array
(
[file] => /nas/content/live/stgtrulite/index.php
[line] => 17
[args] => Array
(
[0] => /nas/content/live/stgtrulite/wp-blog-header.php
)
[function] => require
)
)
И не происходит ли перенаправление в файле .htaccess?
Возможно, вы захотите проверить панель управления в WPEngine и убедиться, что в их панели не настроено перенаправление. Это не будет проблемой канонического URL, так как он не влияет на перенаправление, только на индексацию в поисковых системах.
Если я ввожу https://stgtrulite.wpengine.com/platform/?123, это перенаправляет на https://stgtrulite.wpengine.com/?123 – так что перенаправление все еще активное где-то.
Что касается Google и их индексации, вы можете использовать их инструмент “удалить из индекса”, который удалит URL из результатов поиска – https://support.google.com/webmasters/answer/9689846?hl=en
Я не уверен, что вы на самом деле хотите удалить его из индекса, только перенаправление, верно? И если это так, и у вас нет плагина, делающего перенаправление, тогда должно происходить либо перенаправление через .htaccess, либо на стороне сервера.
Кажется, я понял. Документация здесь помогла. Когда я сбросил правила перезаписи с установленным проблемным плагином, поведение не изменилось. Когда я удалил все плагины и тему, затем сбросил правила перезаписи, перенаправление наконец ушло. Я смог отследить плагин, который сбивал настройку rewrite_rules в БД, повторив этот процесс.
.
Ответ или решение
Когда подстраницы перенаправляются на главную страницу в WordPress, это может быть вызвано рядом причин. Давайте углубимся в теорию, примеры и рассмотрим, как можно применить различные стратегии для решения этой общей проблемы.
Теория
В первую очередь важно понимать механизмы, которые могут вызвать перенаправление в WordPress. Среди них:
- Канонические URL: Несмотря на то, что они в первую очередь предназначены для указания предпочтительных URL для поисковых систем, в WordPress их можно использовать для перенаправления.
- Записи в .htaccess: Этот файл используется веб-сервером для конфигурации перенаправлений и других функций. Неправильные настройки могут привести к перенаправлениям.
- Плагины: Множество плагинов, особенно те, что управляют SEO или перенаправлениями, могут создать такие ситуации, когда URL перенаправляется на главную страницу.
- Темы: Некоторые темы могут иметь встроенные функциональности перенаправления.
Пример
В вашем случае проблема началась после установки WordPress версии 6.1.1. Это совпадение может означать, что проблема связана с обновлением. Проблема проявляется при попытке доступа к URL, содержащим /platform/[что-либо]
, которые перенаправляются на главную страницу. Интересно, что удаление .htaccess, отключение всех плагинов и замена темы на стандартную не решило проблему, что может указывать на конфликт на сервере или в базе данных.
Ваше исследование с использованием curl
подтвердило, что перенаправления исходят из самого WordPress. Это подводит нас к возможной ошибке в правилах переписывания URL (rewriting rules), которые обрабатываются в конкретной строке кода wp_redirect
в canonical.php
.
Применение
-
Проверка правил в .htaccess: Обычно первое место, где стоит искать перенаправления. Поскольку вы уже пробовали удалять/переименовывать этот файл, стоит сосредоточиться на других аспектах.
-
Административная панель WPEngine: Проверьте, нет ли заданных перенаправлений на уровне платформы хостинга. Иногда службы хостинга предлагают встроенные функции перенаправления, которые можно легко изменить через их интерфейс.
-
Диагностика плагинов: Хотя вы уже отключили все плагины, попробуйте повторно включить их по одному, каждый раз проверяя, восстанавливается ли проблема. Для этого проделайте процедуру очищения (flush) rewrite rules при активированном плагине и при его отключении, чтобы проверить взаимодействие.
-
Утилита flush rewrite rules: Воспользуйтесь функцией
flush_rewrite_rules()
, чтобы обновить настройки правил переписывания URL. Если какие-то плагины или темы регистрируют свои собственные правила, данная процедура может восстановить их в правильном порядке. -
Анализ базы данных: При возникновении сложных проблем иногда нужно прибегнуть к просмотру базы данных WordPress напрямую. Убедитесь, что в таблице
wp_options
нет противоречивых записей для любого заданного URL. -
Журналирование и обратная трассировка: Ваша методология отладки через
debug_backtrace
помогла настроить точное выявление проблемы. Продолжение использования этого подхода с добавлением записей в журнал с более подробной информацией может дать важную подсказку.
Заключение
Важно понимать, что проблемы перенаправления в WordPress часто связаны с несколькими узлами — хостинг, .htaccess, плагины и темы. Использование методического подхода и детального анализа данных журнала, отладки и устранения проблем на уровне кода очень важно. Ваша конечная цель заключается в том, чтобы восстановить правильное обновление SEO и обеспечить, чтобы ваши страницы стали доступными для поисковых систем без ненужных перенаправлений. Таким образом, вы оптимизируете работу вашего сайта, повышаете его индексируемость и, в конечном счете, улучшаете пользовательский опыт.