Дубли из-за движка

A
На сайте с 18.09.2013
Offline
39
520

Нужна помощь на самописном движке properdiet.ru (мой сайт) есть проблема с дублями, а именно с 404 ошибкой. Начиная с 3 уровня вложенности страниц одна страница может отражаться под разными адресами.

Работала с одним программистом, по его словам, не получается сделать ни 404 код ответа, ни даже настроить rel="canonical". Может быть кто-то сталкивался, были какие-то решения, кроме смены CMS. Мне – не программисту – достаточно сложно разбираться в этой тематике. Смысл объяснений понятен, но может быть есть какие-то решения… Может быть, кто-то сталкивался с таким….

Приведу слова программиста:

«Не осилим мы сделать 404 на текущем движке, т.к. вся подноготная движка заточена на поиск хоть чего-то из адреса (и когда находится, то всё остальное неважно), а это значит – только переписывать весь движок.

Механизм с каноническими ссылками тоже не удастся реализовать, т.к. по сути правильных адресов для движка нет, он буквально выискивает хоть что-то в адресе, что есть в базе данных сайта и показывает. Страницам существующим этот тег намертво тоже не пропишешь, т.к. страницы статично не хранятся, а генерируются динамически.

Чтобы прописать в динамически создаваемых страницах каноническую ссылку, надо знать как она должна выглядеть, чтобы сгенерировать нужный тег в заголовке страницы. Движок не позволяет узнать какая должна быть каноническая ссылка, он ориентируется на адрес страницы только на первому уровне адреса (/belki например), а на втором учитывает только номер страницы, а ее ПРАВИЛЬНЫЙ псевдоним (для канонического адреса) нигде не достать. Вот в чем проблема.

Т.е. движок не проверяет полностью адрес страницы, он выискивает для страницы второго уровня только их номер, id, остальное ему совершенно безразлично и функций сопоставления номера страницы и правильной части адреса нет.

Вот смотрите, на скрине http://joxi.ru/krDDQbvhEq4Mkr видно данные по странице

Как видите, та часть, которая написана латинскими буквами – вообще нигде не сохраняется и генерируется из тайтл.

Страницы генерируются динамически движком и поэтому тег канонической ссылки тоже надо генерировать автоматически.

Но данные для такой генерации (псевдоним каждого уровня в адресе) от движка взять неоткуда».

dotern
На сайте с 21.09.2016
Offline
135
#1

Самое главное не сказали, что за движок?

Дейл Купер
На сайте с 26.12.2016
Offline
116
#2
dotern:
Самое главное не сказали, что за движок?

Что-то самописное :)

Просто личный блог. Excel, VBA, аналитика https://xvba.ru/
MK
На сайте с 18.08.2005
Offline
126
#3
dotern:
Самое главное не сказали, что за движок?
самописном движке
Т.е. движок не проверяет полностью адрес страницы, он выискивает для страницы второго уровня только их номер, id, остальное ему совершенно безразлично и функций сопоставления номера страницы и правильной части адреса нет.

Например, такой адрес:

/mineralnye_veshhestva/page2/139-fosfor-v-organizme-cheloveka/

возвращяет 200. (урл получен добавлением ид 139 из скрина в 1 попавшийся адрес mineralnye_veshhestva/page2/67-fosfor-v-organizme-cheloveka/). Зачем page2😕

Изменив 1 сегмент УРЛа /vitaminy/page2/139-fosfor-v-organizme-cheloveka/ все равно 200, а если /vitarrrrrrminy/page2/139-fosfor-v-organizme-cheloveka/ (заведомо неверная категория) то 404. Т.е. наличие категории существующей в БД проверяется.

Из того, что у вас есть в таблице на скрине, не видно связи с категорией. А остальное для правильной генерации, например, каноникла или отдать 404 для невалидного УРЛА есть. Ид - 139, транслит поля title судя по всему. Осталось установить связь с категорией. Допускаю, что это невозможно.

нет
Aisamiery
На сайте с 12.04.2015
Offline
319
#4

Подправить. Если движек самописный, значит его можно подковырять.

1) Добавить slug в БД страницы, чтоб не брать с титла и сделать его каноникалом

2) Если статьи как то привязаны к категории (они же проверяются как то для вывода в нужной категории?), то проверять при выводе что нужная категория

3) Ну и наконец, нужно смотреть конечно код, но я бы сделал примерно следующее, если там MVC с единой точкой входа, то я бы обернул все это дело в try/catch и буферизировал вывод, а там где собирается страница просто бросал бы исключение а в catch бы обрабатывал

Как у вас внутри - хз. Что вам сделать с самописом (мышкой?) - хз. Либо попытатся найти исполнителя который возьмет этот самопис на саппорт, либо стиснув зубы, выгребси копеечку и перенести проект на более "популярную" cms что ли, но правда там буду проблемы другого характера, но этих зато не будет :)

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
A
На сайте с 18.09.2013
Offline
39
#5

спасибо за ответы :), насколько я поняла - либо править сам движок, либо переносить сайт....

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
dotern:
Самое главное не сказали, что за движок?

Те. неасилил даже самое начало топика? :)

alyarobinsss:
Мне – не программисту – достаточно сложно разбираться в этой тематике. Смысл объяснений понятен, но может быть есть какие-то решения…

Вы правда считаете, что ваш программист (написавший такой кривой движок?), которыей работает с движком, меньше знает, чем мы тут, не зная движка? Это прЭлетсно :)

Но тем не менее у меня закрадывается сомнение - может просто ему надо больше заплатить и он добавить поле для каноникала в данные для страницы? В поле, заполняемое вручную.

(+ сделать скрипт для импорта в это поле уже существующих адресов сайта).

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
C
На сайте с 04.02.2005
Offline
291
#7

Я так понимаю, что челу достался уже движок, и новый программист,

по названиям таблиц вроде нет такой чтобы от нее строился slug

И.. там много чего непонятно, пока не увидим ни сайта, ни кода движка

Arsh
На сайте с 21.03.2007
Offline
199
#8
Chukcha:
Я так понимаю, что челу достался уже движок, и новый программист

+1

Походу, движок от дорвейщика достался)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий