Как удалить дубли страниц wordpress?
Столкнулся с проблемой с которой раньше никогда не сталкивался, в гугле ответа не нашел.
Есть дочерняя страница с УРЛ:
https://cars-lada.ru/skupka-chasov/skupka-chasov-a...
удаляем из УРЛ /skupka-chasov/ и получаем новую страницу.
https://cars-lada.ru/skupka-chasov-a-lange-sohne/
Одна страница открывается в 2 двух урл, хотя по идее тут должна была быть 404.
Каноническая страница указана - https://cars-lada.ru/skupka-chasov/skupka-chasov-a...
И так на всем сайте, со всеми дочерними страницами.
CMS - Wordpress, используется тема Woodmart ранее таких проблем не было.
Дополнительно:
Вылечилось сменой ЧПУ.
С
Название записи https://cars-lada.ru/sample-post/ |
Название записи https://cars-lada.ru/sample-post/
На
Месяц и название https://cars-lada.ru/2024/01/sample-post/ |
Месяц и название https://cars-lada.ru/2024/01/sample-post/
Ответы:
ранее таких проблем не было.
Всегда так было. И разработчики ВП считают что проблемы и нет, тк есть каноникал.
В твоём случае в коде он есть.
<link rel="canonical" href="https://cars-lada.ru/skupka-chasov/skupka-chasov-a-lange-sohne/" /> |
<link rel="canonical" href="https://cars-lada.ru/skupka-chasov/skupka-chasov-a-lange-sohne/" />
Как правило ПСы это правильно воспринимают. Хотя при определённых условиях каноникал может игнорироваться. Но на практике на правильно сделанных сайтах на ВП я такого не видел (на других движках и мутных схемах формирования ЧПУ встречалось)
хотя по идее тут должна была быть 404.
"По идее" не значит "хорошо". В этом случае лучше бы 301
- Напрягает, что так же меняются хлебные крошки и фон на странице.
И не могу понять как обьясняется тот факт, что на этом сайте с урл и дублями нет проблем.
https://moskomissiontorg.ru/skupka-chasov/prodat-c...
удаляем /skupka-chasovи получаем https://moskomissiontorg.ru/prodat-chasy-a-lange-sohne/ - 404
Используется та же версия Wordpress и та же версия Woodmart, тот же плагин Yoast
- fargo9, во первых ХК не должны зависеть от урла. Если у тебя такое имеется - значит у тебя они неправильно формируются.
Во вторых неправильных (неканонических) урлов быть не должно. Соответственно никто на них не попадёт (кроме как вручную изменив урл). А если у тебя такие светятся - исправляй это в первую очередь.
- Refguser, все решилось сменой показа ссылок в настройках вп. Видимо сбой произошел после переноса сайта. Спасибо за ответы
- fargo9, ещё раз - нет никакого "сбоя". Это стандартное поведение ВП. И, при правильно сделанном сайте, проблем не создаёт. А изменение правил ЧПУ.. ну если тебя устраивают новые урлы и, соответственно, переиндексация, то дело твоё.
- Refguser, о чем вы говорите. Изначально урл во время разработки были правильные, сломалось все после самостоятельного переноса сайта 3 лицами. После изменения ЧПУ ( Я просто установил новый формат вывода ссылок, затем включил заново прежние). Благодарен за ваше потраченное время, можете называть это стандартным поведением, но я с таким столкнулся в первые в WP и похоже это только на сбой при переносе.
- fargo9,
сломалось все после самостоятельного переноса сайта 3 лицами.
Кривыми руками, а не "сбоя".
Но это совершено другой вопрос, нежели ХК и каноникал. О чем я и говорил а ты, не понял.
Ну и ладно, твой сайт. тебе разгребать косяки "3х бестолковых лиц".
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если дочерняя страница открывается и по полному URL, и без родительского сегмента, это обычно не “дубль WordPress по умолчанию”, а конфликт permalink, canonical redirect, плагина SEO/redirect или нестандартной логики темы. В нормальной ситуации дочерняя страница должна иметь один канонический адрес.
Первое: проверьте фактический статус ответа. Откройте оба URL и посмотрите, что происходит: второй URL отдаёт 200 или 301 на основной? Если идёт 301 на правильный адрес, это не дубль. Если оба отдают 200 — проблему нужно чинить.
Проверьте canonical в HTML. На дубль-URL он должен указывать на основной адрес. Но canonical не заменяет редирект, если страница доступна в двух вариантах и попадает в индекс.
Что проверить в админке:
После любых изменений пересохраните постоянные ссылки: “Настройки → Постоянные ссылки → Сохранить”.
Если WordPress реально отдаёт дубль без родителя, можно принудительно редиректить страницы на их правильный permalink:
add_action('template_redirect', function () { if (!is_page()) { return; } $canonical = get_permalink(); $current = home_url(add_query_arg([], $_SERVER['REQUEST_URI'])); if (untrailingslashit($current) !== untrailingslashit($canonical)) { wp_safe_redirect($canonical, 301); exit; } });
Но такой код нужно тестировать аккуратно, чтобы не сломать пагинацию, query-параметры, предпросмотр и служебные страницы. Лучше сначала найти источник дубля.
Также проверьте, не включена ли у SEO-плагина функция удаления base/parent для страниц или не стоит ли плагин типа “Custom Permalinks”. Такие плагины часто позволяют вручную задавать URL, и из-за них появляются неожиданные варианты.
Итог: если второй URL отдаёт 301 — всё нормально. Если 200 — ищите конфликт slug/rewrite/плагина и ставьте 301 на канонический адрес. Просто удалять страницу не нужно, иначе можно потерять нормальный URL.