Jump to content
Sign in to follow this  
Yesvik

[Поддержка] Устранение дублей страниц товаров и категорий

Recommended Posts

Устранение дублей страниц товаров и категорий


Устранение дублей страниц товаров и категорий


URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться. (смотри скриншот)

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

09 апреля 2011 перезалил архив.

Добавлен контроль ссылок со слешем и без в конце URL, теперь /desktop/mac/imac/ и /desktop/mac/imac расцениваются как разные.

6 мая 2011 добавлена возможность выбора формата построения URL для страниц товара:

/category/subcategory/product

или

/product

При выборе построения URL /product хлебные корошки и меню формируются с учетом полного пути к товару (с категориями/подкатегориями)

Изменения в файлах ocStore версии 0.2.0

Файл: admin/controller/setting/setting.php

===================================================================

находим

'config_seo_url_auto','config_seo_url_replace',

заменяем на

'config_seo_url_include_path','config_seo_url_postfix',

Файл: admin/language/russian/setting/setting.php

===================================================================

находим

$_['entry_seo_url']           = 'Использование SEO-url:<span class="help">Необходимо настройть файл .htaccess в корневом каталоге магазина</span>';$_['entry_seo_url_auto'] 	  = 'Автоподстановка окончаний SEO-url:<span class="help">Добавляет / в конце УРЛ</span>';$_['entry_seo_url_replace']   = 'Заменять пробелы на "_" в SEO-url:';

заменяем на

$_['entry_seo_url']           = 'Использовать SEO-url:<span class="help">Необходимо настройть .htaccess в корневом каталоге магазина</span>';$_['entry_seo_url_include_path'] = 'SEO-url товаров с категориями:<span class="help">/category/subcategory/product</span>';$_['entry_seo_url_postfix']   = 'Окончание ЧПУ:<span class="help">Например / или .html</span>';

Файл: admin/view/template/setting/setting.tpl

===================================================================

находим

<tr>	<td><?php echo $entry_seo_url_auto; ?></td>	<td><?php if ($config_seo_url_auto) { ?>		<input type="radio" name="config_seo_url_auto" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_auto" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_auto" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_auto" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

заменяем на

<tr>	<td><?php echo $entry_seo_url_include_path; ?></td>	<td><?php if ($config_seo_url_include_path) { ?>		<input type="radio" name="config_seo_url_include_path" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_include_path" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_include_path" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_include_path" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

находим

<tr>	<td><?php echo $entry_seo_url_replace; ?></td>	<td><?php if ($config_seo_url_replace) { ?>		<input type="radio" name="config_seo_url_replace" value="1" checked="checked" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_replace" value="0" />		<?php echo $text_no; ?>		<?php } else { ?>		<input type="radio" name="config_seo_url_replace" value="1" />		<?php echo $text_yes; ?>		<input type="radio" name="config_seo_url_replace" value="0" checked="checked" />		<?php echo $text_no; ?>		<?php } ?></td></tr>

заменяем на

<tr>	<td><?php echo $entry_seo_url_postfix; ?></td>	<td><input type="text" name="config_seo_url_postfix" value="<?php echo $config_seo_url_postfix; ?>" size="3" /></td></tr>

Файл: catalog/controller/common/seo_url.php

заменям полностью

Файл: catalog/model/tool/seo_url.php

заменям полностью

P.S. SeoPack решил удалить потому что многих пугает большое количество изменённых файлов, не разбираясь что в основной массе файлов изменения были связаны с заменой & на & для валидации по XHTML стандарту.

Позже напишу описание и выложу SEO URL Manager отдельно.


 

  • +1 6

Share this post


Link to post
Share on other sites

Имя файла: Устранение дублей страниц товаров и категорий

Владелец файла: Yesvik

Файл размещен: 06 апр. 2011

Категория файла: Прочее

URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться.(смотри скриншот)

post-6876-0-96815900-1302046449_thumb.png

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

Нажмите сюда, чтобы скачать этот файл

У Вас файлы в архиве уже все переделаны. Все перекопировал, Сделал запросы в БД, в товарах появились title и h1 Сверху в админке выскакивает Notice: Undefined index: title in /home/u199843/protherm-rus.ru/www/admin/model/catalog/product.php on line 425Notice: Undefined index: h1 in /home/u199843/protherm-rus.ru/www/admin/model/catalog/product.php on line 426. Товары не вводятся, а при изменении старые пропадают. Что сделать подскажите. Спасибо.

Share this post


Link to post
Share on other sites

У Вас файлы в архиве уже все переделаны.

В архиве файлы для ocStore 0.1.9, как устанавливать на предыдущие версии описано в readme.txt

Share this post


Link to post
Share on other sites

поставил 0.1.9 и могу сказать что доработка Yesvik мега крутая штука из любого места урл подставляется согласно запланированному как и в описании к модулю

вот теперь думаю ждать 0.2.0 и обновляться с 0.1.7 или делать это сейчас что может повлечь за собой уже смену существующих урлов и смену урлов в индексе и очередные ожидания переиндексации

Yesvik а 301 редиректы где и каким образом прописаны ? возможно мне удастся временно обойтись полумерами в виде этих редиректов и дождаться 2.0 чтобы 100 раз не обновляться

еще раз я в восторге

Share this post


Link to post
Share on other sites

поставил 0.1.9 и могу сказать что доработка Yesvik мега крутая штука из любого места урл подставляется согласно запланированному как и в описании к модулю

вот теперь думаю ждать 0.2.0 и обновляться с 0.1.7 или делать это сейчас что может повлечь за собой уже смену существующих урлов и смену урлов в индексе и очередные ожидания переиндексации

Yesvik а 301 редиректы где и каким образом прописаны ? возможно мне удастся временно обойтись полумерами в виде этих редиректов и дождаться 2.0 чтобы 100 раз не обновляться

еще раз я в восторге

А чего ты переживаеш за индексацию?

Если ты не измениш псевдонимы у товаров и у категорий, то все старые урлы будут переадресованы на новые со статусом 301. Я прекрасно понимаю как болезненна смена URL - потому и сделал редиректы 301.

Даже если товар был в одной категории и ПС заглотили ссылку, в дальнейшем можно спокойно перенести товар в другую категорию и на старые ссылки сработает редирект 301... главное что-бы псевдонимы категорий и товаров не менялись.

Даже если ты не использовал псевдонимы и у тебя ссылки вида /index.php?route=product/product&path=25_28&product_id=42 - есть два варианта:

1. включить SEO но не прописывать псевдонимы и тогда будет работать контроль ссылок с редиректами на URL в котором path будет всегда один и тот-же;

2. включить SEO и прописать псевдонимы - тогда тоже будет работать контроль, но редиректы будут на ЧПУ;

На любой из вариантов поисковики отреагируют лояльно.

Проверка правильности URL использует алгоритм формирования ЧПУ, так что отдельно редиректы выдернуть не получится...

Ну и в крайнем случае, можно не обновлять магазин полностью, а прикрутить только новый алгоритм формирования ЧПУ. В readme.txt расписано как это сделать.

  • +1 1

Share this post


Link to post
Share on other sites

Спасибо Yesvik

наверно так и поступлю докручу к 0.1.7 как описано в реадми и буду ждать 0.2.0

посмотрел на 0.1.9 и плюс Ваш модуль уже получается очень даже оптимизированный движок

еще бы разобраться как H1 название товара вверх страницы поднять и можно спать спокойно :-)

Share this post


Link to post
Share on other sites

Спасибо! Всё работает. Всё прекрасно. версия 0.1.9

Share this post


Link to post
Share on other sites

Имя файла: Устранение дублей страниц товаров и категорий

Владелец файла: Yesvik

Файл размещен: 06 апр. 2011

Категория файла: Прочее

URL товаров и категорий всегда формируется с учетом иерархии категорий.

Для этого в разделе "Связи" товара сделаны изменения позволяющие указать одну категорию товара, относительно которой и будет строиться URL, и список категорий в которых этот товар будет отображаться.(смотри скриншот)

post-6876-0-96815900-1302046449_thumb.png

URL товаров и категорий проверяются, запросы с неправильной иерархией (дублирующие основной URL страницы) переадресовываются со статусом 301 Moved Permanently на URL сформированный с учетом заданной иерархии категорий.

Если URL построен с неправильной иерархией - URL будет исправлен, например, у товара URL /desktops/mac/imac/, а пришел запрос /desktops/imac/, /mac/imac/, /mac/desktops/imac/ или просто /imac/ то URL будет исправлен.

Но если в URL будут категории которых вообще нет, например /desk/tops/mac/imac/, или не правильно указан товар /desktops/mac/ciam/ будет выведена страница ошибки с текстом "Запрашиваемая страница не найдена!" и статусом 404 Not Found.

Такое-же поведение с категориями...

Если для построения ЧПУ не хватает какого-то псевдонима - URL строится GET параметрами, при этом параметр path, который отвечает за иерархию категорий, всё равно контролируется и формируется с учетом заданной иерархии категорий.

Алгоритмы формирования и контроля URL используют кеширование, так что в большинстве случаев нагрузка на базу даже ниже чем у штатного алгоритма формирования ЧПУ. Даже при холодном старте...

Нажмите сюда, чтобы скачать этот файл

Сделал как написано в readme для старых версии в админке вместо категории появилось Notice: Undefined variable: entry_main_category in /home/u199252/мой сайт/www/admin/view/template/catalog/product_form.tpl on line 216 Подскажите пожалуйста в чем проблема. Версия 0.1.6

Share this post


Link to post
Share on other sites

Сделал как написано в readme для старых версии в админке вместо категории появилось Notice: Undefined variable: entry_main_category in /home/u199252/мой сайт/www/admin/view/template/catalog/product_form.tpl on line 216 Подскажите пожалуйста в чем проблема. Версия 0.1.6

Все получилось OK . Спасибо большое Yesvik

Share this post


Link to post
Share on other sites

Спешу всех обрадовать. В следующую версию ocStore 0.1.10 войдет патч Yesvik по поводу уникальных SEO-URL уже на постоянной основе. :)

Share this post


Link to post
Share on other sites

Спасибо, отличный мод, сразу поставил ocStore и сразу накатил этот под. Только у меня вопрос, возможно не связанный с данным модом: если у меня в разных разделах используются одинаковые "seo alias", например: www.shop/lanos/motor/tovar и www.shop/lada/motor/tovar , то при заходе на www.shop/lada/motor перекидывает на shop/lanos/motor (с другими подкатегориями также), это из-за мода или нет, просто я магазин поставил сразу с модом, возможности проверить нету.

Share this post


Link to post
Share on other sites

Спасибо, отличный мод, сразу поставил ocStore и сразу накатил этот под. Только у меня вопрос, возможно не связанный с данным модом: если у меня в разных разделах используются одинаковые "seo alias", например: www.shop/lanos/motor/tovar и www.shop/lada/motor/tovar , то при заходе на www.shop/lada/motor перекидывает на shop/lanos/motor (с другими подкатегориями также), это из-за мода или нет, просто я магазин поставил сразу с модом, возможности проверить нету.

алиасы обязательно должны быть разными

Share this post


Link to post
Share on other sites

Нашел баг: если в алиасах использовать подчеркивание то страница становится не найдена. как только подчеркивания меняешь на пробелы все отлично работает и модуль сам заменяет пробелы на подчеркивания

Share this post


Link to post
Share on other sites

Если в элиасах есть подчеркивания - снимите галку на счет замены пробелов на подчеркивания. Это не ошибка - это особенность.

Share this post


Link to post
Share on other sites

Нашел баг: если в алиасах использовать подчеркивание то страница становится не найдена. как только подчеркивания меняешь на пробелы все отлично работает и модуль сам заменяет пробелы на подчеркивания

Да, это остаточные явления борьбы с пробелами в алиасах, до которых руки ещё не добрались.

Получается следующая засада:

Если в алиасе есть и пробелы и подчерки, и в настройках включено "Заменять пробелы на "_" в SEO-url", то при формировании ЧПУ пробелы заменяются на подчерки... А при обратном преобразовании даже те подчерки которые изначально были в алиасе заменяются на пробелы. В итоге - ничего не работает.

По хорошему надо поставить контроль чтобы всякие глупости в алиасы не писали, а не корректировать алиасы при формировании ЧПУ.

Старайся придерживаться таких правил:

В алиасах не должно быть пробелов, а вместо подчерка ( _ ), с точки зрения SEO, желательно использовать минус ( - ).

Share this post


Link to post
Share on other sites

Подскажите, стоит ваш модуль, если изменить seo alias для категории, в которой уже есть товары, то товары из этой категории пропадают, нужно заново пересохранять товар, т.е. нажать "изменить"-"готово" и только тогда seo-url перезаписывается правильно. Это связано с вашим модулем или это кривость движка opencart? и как это можно изменить? И еще воспрос, почему вы считаете что "-" лучше , чем "_". Спасибо.

Share this post


Link to post
Share on other sites

Подскажите, стоит ваш модуль, если изменить seo alias для категории, в которой уже есть товары, то товары из этой категории пропадают, нужно заново пересохранять товар, т.е. нажать "изменить"-"готово" и только тогда seo-url перезаписывается правильно. Это связано с вашим модулем или это кривость движка opencart? и как это можно изменить? И еще воспрос, почему вы считаете что "-" лучше , чем "_". Спасибо.

Опиши точнее что значит "пропадают товары"?

Какая версия OpenCart?

Как правило "_" используется в качестве разделителя слов.

Некоторые поисковики воспринимают слова разделённые "_" как одно слово.

При использовании в качестве разделителя "-" все поисковики воспринимают слова раздельно.

Учитывая что вхождение ключевика в URL имеет значительный вес при ранжировании, а точное совпадение с поисковым запросом более релевантно - я бы не стал пренебрегать таким советом даже с учетом того что 100% подтверждения, описанному поведению поисковиков, нет.

Share this post


Link to post
Share on other sites

Yesvik, нужна твоя помощь с устранением глюка.

Ситуация:

1. Включаем SEO-URL с твоими правками.

2. В одной из категеорий (с большим количеством товара) оставляем элиас пустым.

3. Идем в эту категорию и обнаруживаем отсуствие листания по страницам.

Поправь, плиз и скинь мне изменения.

Share this post


Link to post
Share on other sites

Ситуация:

1. Включаем SEO-URL с твоими правками.

2. В одной из категеорий (с большим количеством товара) оставляем элиас пустым.

3. Идем в эту категорию и обнаруживаем отсуствие листания по страницам.

А какие ссылки формируются в постраничной навигации?

Share this post


Link to post
Share on other sites

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

  • +1 1

Share this post


Link to post
Share on other sites

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

Вау других слов нет скоро ПС будут содрогаться от Вашего имени

но если не сложно можно в двух словах зачем корзину индексировать ? даже если страница попадет в основной индекс и пользователь перейдет на нее из ПС он растеряется и его поведение будет практически таким же как и при попадании на 404

я сейчас наблюдаю глубину 1 при попадании на 404 так как уже около месяца в ПС сидят страницы от старого движка

Share this post


Link to post
Share on other sites

Вау других слов нет скоро ПС будут содрогаться от Вашего имени

но если не сложно можно в двух словах зачем корзину индексировать ? даже если страница попадет в основной индекс и пользователь перейдет на нее из ПС он растеряется и его поведение будет практически таким же как и при попадании на 404

я сейчас наблюдаю глубину 1 при попадании на 404 так как уже около месяца в ПС сидят страницы от старого движка

Корзина действительно не нужна поисковикам, также как и поиск, личный кабинет и т.д.

Я для тестов автоматом собрал и затолкал в модуль кучу пар запрос->псевдоним... А вообще каждый сам будет добавлять/удалять пары запрос->псевдоним так как сочтёт нужным.

  • +1 2

Share this post


Link to post
Share on other sites

Корзина действительно не нужна поисковикам, также как и поиск, личный кабинет и т.д.

Я для тестов автоматом собрал и затолкал в модуль кучу пар запрос->псевдоним... А вообще каждый сам будет добавлять/удалять пары запрос->псевдоним так как сочтёт нужным.

Очень интересная вещь. :)

Share this post


Link to post
Share on other sites

Ошибку нашел, исправил, но у меня уже почти готовы новые заморочки с ЧПУ... Произвольные окончания, ЧПУ на ссылки типа route=account/account, route=checkout/cart и т.д.

Выкладывать исправления или новый вариант?

Ну, лучше и то и другое. :)

Share this post


Link to post
Share on other sites

Ну, лучше и то и другое. :)

У меня небольшая загвоздка...

В новом варианте seo_url я убрал в настройках 2 пункта. Замена пробела на подчерк и добавление слеша в конце ЧПУ. Добавил поле для ввода окончания ЧПУ. Это поле можно оставить пустым или указать любое желаемое окончание ЧПУ, например, / или .html и т.д. Но остаётся открытым вопрос с заменой пробелов на подчерк... Заменять на лету не совсем корректно и работает только при соблюдении определённых условностей. Если я добавлю процедурку которая по нажатию кнопочки пройдётся по всем псевдонимам и приведёт их в порядок (заменит пробелы на минус) - это будет нормальным решением? Это решение временное, пока не допишу формирование псевдонимов при создании/редактировании категорий/товаров/производителей/статей с соответствующим контролем правильности написания псевдонима при ручном вводе.

Пошел писать исправлялку, но жду пожелания или другие варианты решений этой загвоздки.

  • +1 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.