Избавляемся от дублей страниц с помощью 301 редиректа

  • 193 Ответов
  • 84275 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Efanych

Отличный способ избавления от дублей на сайте придумал пользователь TwistedAndy
Принцип работы редиректа описан в теме Решение проблемы с дублями страниц в Joomla 1.5

Так же в той теме пользователь sherza написала


Ещё...




Решение предназначено для использования со стандартным SEF. При использовании сторонних SEF корректная работа не гарантируется.

В этой теме буду выкладывать решения для сторонних компонентов.
Приведённый код желательно вставлять после запрета прямого доступа, если знаете синтаксис php. Если не знаете, то просто скопируйте код и вставьте в самый верх указаного файла. Файлы буду указывать системные, но часто они могут быть переопределены в шаблоне в папке HTML, тогда указаный код необходимо писать в переопределённые файлы, иначе работать не будет. Подробнее о шаблонизации

Joomla 1.6+ (эти файлы почти всегда переопределены в шаблоне, так что ищите в папке HTML шаблона)
Спойлер
[свернуть]

Для VirtueMart 1,1 (может и на других заработает, не проверял)
Спойлер
[свернуть]

Для FLEXIcontent 2.0
Спойлер
[свернуть]

Для K2
Спойлер
[свернуть]

Для zoo. (Проверял на 2.6.6)

Спойлер
[свернуть]


Для JoomShopping (Пробовал на версии 3.11.4)
Спойлер
[свернуть]
Стоит отметить, что при использовании редиректа станет невозможной передача параметров через URL. В часности не работает страница печати.

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

Добавлено: хак для роутера com_content проверялся на версии 2.5.4 и 2.5.7
Избавляет от дублей вида - site.ru/2 site.ru/333 и подобных (страницы нормально отдают 404)
/components/com_content/router.php
просто закомментировать строку
Код: (php) [Выделить]
$vars['id'] = (int)$segments[0];
« Последнее редактирование: 09.02.2016, 14:32:01 от Efanych »
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн Efanych

У вас в шаблоне есть папка html/com_content?
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн gadjet

есть конечно)
Решение от TwistedAndy не сработало у меня. Да там у многих проблемы я смотрю были. Да и ваше проще на мой взгляд. Только в чем глюк собственно млм я забыл сделать что то?

*

Оффлайн ELLE

есть конечно)
вот там и нужно прописывать, у вас шаблон переопределен

зы. подписалась ;)

*

Оффлайн leshkoff

я так смотрю + тайтл вбиваю и все всплывает
(PS: пост выше обновила, ссылка на плагин)

Хотя в 1.5 эта проблема уходила простым добавлением кода. Может это потому, что для списка категорий (com_content/categories) в Joomla 1.7/2.5 код пока не разработали?

*

Оффлайн Efanych

Для списка категорий не разработано. Но когда я первый раз ходил по тем странным ссылкам, там же был блог категории вроде. Я что ещё подумал, а вы альтернативные шаблоны не используете?
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн kman

Добрый день! Очень просим сделать подобное решение для борьбы с дублями DJ Catalog2

------
Поставьте или плагин от sherza
Или внесите правки в Файл components\com_content\views\article\tmpl\default.php (я этим способом пользуюсь для стандартного ком_контент)
Потом расскажете о результатах

Простите меня за наивные вопросы, если у меня весь контент в K2, то мне плагин ставить? Или лучше править код компонента?

Плагин вылечит вот эту проблему?:
http://site.ru/ohota/item/851-ohota-na-gusya
http://site.ru/ohota/item/851-ohota-n
http://site.ru/ohota/item/851
результат тот же, удаляй-добаляй один фиг.


и вот эта конструкция
http://site.ru/rybalka?start=10
если к ней добавить что угодно...
http://site.ru/rybalka?start=167676768686878787
не отдает 404... я так понимаю, что здесь выход - только robots.txt Disallow: /*?   так?

Спасибо!
« Последнее редактирование: 24.10.2012, 19:48:11 от rightmiha »

*

Оффлайн ELLE

для k2 править код компонента
чтоб пагинацию закрыть - да через robots.txt

для k2 править код компонента
чтоб пагинацию закрыть - да через robots.txt

в файл  components/com_k2/templates/default/item.php

вставил код

<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>

в самый верх файла, до открывающего  <?php

Эффекта нет, как угодно укорачивай удлинняй урл, или просто айдишник оставляй - не отдает 404
Я только правил код, модуль не ставил.
Кэш через админку чистил.
« Последнее редактирование: 24.10.2012, 20:01:02 от rightmiha »

*

Оффлайн ELLE

оно и не будет 404 отдавать, а должен быть 301 редирект на правильный урл
у вас точно default шаблон?
я к сожалению не использую k2, проверить не на чем
возможно Efanych поможет чем-то

оно и не будет 404 отдавать, а должен быть 301 редирект на правильный урл
у вас точно default шаблон?
я к сожалению не использую k2, проверить не на чем
возможно Efanych поможет чем-то

ну, может он и редиректит...но в строке урла так и остается корявая ссылка. Шаблон сайта не дефолтный, шаблон K2 (K2 v2.5.7) item.php из коробки дефолтный.

PS: Нашел еще одно руководство: http://joomlaforum.ru/index.php/topic,200322.msg1060006.html#msg1060006 
« Последнее редактирование: 24.10.2012, 20:30:18 от rightmiha »

*

Оффлайн Efanych

Цитировать
в файл  components/com_k2/templates/default/item.php
вставил код
Посмотрите, нет ли аналогичного файлика в папке HTML вашего шаблона.
Создание сайтов, шаблонов, помощь в решении проблем.

Посмотрите, нет ли аналогичного файлика в папке HTML вашего шаблона.

Нет там файла нет, вот тут вот :
Увидел еще один шаг, который я не делал, но проблема у меня такая же как у человека, хотя версия выше чем 2.5

шаг: http://joomlaforum.ru/index.php/topic,200322.msg1060006.html#msg1060006

2) Добавляем строчки в файле /components/com_k2/k2.php (Только для К2, не выше 2.4.1. - В Версии 2.5.+ этот вопрос решен - именно оттуда и взял дополнительное условие).
После текста:
Код:
if (JFile::exists(JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php')) {
   require_once (JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php');
   $classname = 'K2Controller'.$controller;
   $controller = new $classname();
   $controller->execute(JRequest::getWord('task'));
   $controller->redirect();
}
Добавляем строчку:
Код:
else {
   JError::raiseError(404, JText::_('K2_404'));
}

*

Оффлайн Efanych

Цитировать
проблема у меня такая же как у человека, хотя версия выше чем 2.5
Если
Цитировать
урл:  http://site.ru/rybalka/item/226-zimnyaya-ryibalka-nachinayuschim
отображает ту же самую страницу по адресам:
то там другая проблема.

Для проверки, тот ли вы файлик правите, поменяйте какой-нибуть класс дива и посмотрите, отобразятся ли изменения на сайте.
Создание сайтов, шаблонов, помощь в решении проблем.

Еслито там другая проблема.

Для проверки, тот ли вы файлик правите, поменяйте какой-нибуть класс дива и посмотрите, отобразятся ли изменения на сайте.

Гениально! :) ВСе работает, оказалось файлы были еще и в самом шаблоне сайта, очень глубоко закопаны. После того как я просто удалил файл по адресу: components\com_k2\templates\default\item.php сайт продолжил работу...как будто ниче и не удалялось.

пустил поиск по директориям -нашел еще шаблоны k2 следовательно, заменил - все работает!

Спасибо, Efanych !

*

Оффлайн ostrova

Здравствуйте!
Подскажите, а то сомневаюсь, в нужном ли направлении ищу...

У меня стоит модуль "Похожие материалы" и почему-то именно если с него перейти на главную страницу (она у меня называется Приветствие), то сслыка имеет вид не сайт.ру, а сайт.ру/stati/2-uncategorised/1-privetstvie.... stati - это пункт меню....

Вопрос: это тоже дубль, как от него избавиться? Как сделать так, чтобы, щелкая по пункту Приветствие в "Похожих материалах" человек попадал бы на сайт.ру, а не на сайт.ру/stati/2-uncategorised/1-privetstvie.

Что пробовалось: в Joomla есть компонент перенаправление. Так вот там сайт.ру/stati/2-uncategorised/1-privetstvie перенаправила на сайт.ру, но никаких изменений. (Кэш чищен)

Подскажите кто чем может!! Спасибо!


*

Оффлайн HiopsNerevar

  • *****
  • 656
  • [+]88 / [-]0
  • Я удобный.
    • Просмотр профиля
Joomla 2.5 и PhocaGallery 3.2.1 и включен стандартный SEF
Имеется вот такой robots.txt(не менялся уже долгое время)
Спойлер
[свернуть]

Однако Яндекс с завидным постоянством пополняет список "Документ запрещен в файле robots.txt" ссылками вида
/index.php?option=com_phocagallery&view=category&id=140:liiga&Itemid=165
/component/phocagallery/140-liiga/detail/2929-avtorskij-risunok.html?Itemid=165
/component/phocagallery/196-ruth-thompson/detail/3357-avtorskij-risunok.html?phocadownload=1&Itemid=162

Стоит плагин NOdoubles от Sherza однако при включении редиректа для фоки данные страницы выдают Ошибка 310 (net::ERR_TOO_MANY_REDIRECTS): Обнаружено слишком много переадресаций.

Подскажите как с этим бороться? А то идей совсем нет а страницы все пребывают и пребывают.
Это бидаль пича.

*

Оффлайн Efanych

Добавил код склейки дублей для zoo
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн Efanych

Создание сайтов, шаблонов, помощь в решении проблем.

Подскажите - тестирую роутер вот отсюда: http://joomlaforum.ru/index.php/topic,205086.msg1080752.html#msg1080752
По сути - он создает красивые ссылки в нужном формате, добавляя их к уже существующим в VirtueMart

Вопросы знатокам:
1) если использовать этот хак - он может заменить все ссылки на те, которые генерит роутер?
2) у меня сайт проиндексирован - страницы не пропадут из поиска, меня будут находить по старым ссылкам?
3) так и не понял - так что устанавливать, только решение, от TwistedAndy, только плагин от  sherza, или и то, и другое?

*

Оффлайн klara7

Efanych, скажите, пожалуйста, у меня после правки файла item.php в папках шаблона и components/com_k2/templates/default/ ситуация так и не решилась. Я заметила, что еще куча файлов с такими же названиями в папках:
- components/com_k2/views/item/tmpl
- components\com_k2\controllers
- components\com_k2\models
- components/com_k2/models
Может быть эти файлы тоже нужно править? Или лучше не трогать, как считаете?

*

Оффлайн beagler

  • ********
  • 3311
  • [+]390 / [-]4
  • beagler dot ru
    • Просмотр профиля
    • Beagler.ru - решения для интернет магазинов
Нашел у себя еще один дубль. На домене есть почта и по адресу mail.site.ru получаем полный дубль.
убираем в .htaccess домена:
RewriteCond %{HTTP_HOST} ^mail\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]

*

Оффлайн Maxum

Редирект не желает работать при включённом кэше (Общие настройки - Система - "Стандартное" или "Прогрессивное" кэширование). Ни коды, добавленные в соответствующие файлы, ни плагин. Может открыться материал, у которого вместо названия будет заголовок пункта меню, или открыться Главная страница, а внизу у неё будет добавлена статья, на которую и должна была произойти переадресация. Отключаю кэш - переадресация работает.
Проверялось на разных шаблонах, в том числе на чистом дефолтном.

Я правильно понял для JoomShoopping надо использовать код и вставить его вверх файла?
 Плагин не устанавливать!
Код прописал, некоторые страницы которые дубли, начали ссылаться на актуальный URL))

использовал данный код для редиректа дублей товаров в JoomShopping, отлично вроде справляется!
Избавляюсь от дублей типа shop/product/view/
Теперь вопрос, стоит ли удалить из robots.txt
Disallow: */product/view/
Disallow: */category/view/
?
Как просто работает ПС? что в приоритете? т.е. проверяя ссылку она видит первым делом редирект и индексирует ссылку на которую был совершен редирект или все-же первым делом проверяет robots.txt и сразу блокирует?

и еще для категорий работает, просто поменял у категорий алиасы?
« Последнее редактирование: 20.12.2012, 02:02:50 от StyleRocket »

*

Оффлайн ELLE

ПС не узнают о редиректе, если страница закрыта в роботс...ну Яндекс точно не узнает

 редирект только для карточки, для категории отдельно надо составлять, по аналогии


Есть такая ссылка, точнее была site.ru/shop/product/view/4/1165
теперь она редиректится на http://site.ru/muzhskaya-odezhda/muzhskie-dzhinsy/dzhinsy-takugong-1699
Вроде так должен работать!?
Значит теперь удалять Disallow: */product/view/ тем самым оставить доступ для индексации, но уже из Яндекса клиент просто перейдет по редиректу, верно?
« Последнее редактирование: 20.12.2012, 02:45:40 от StyleRocket »

*

Оффлайн ELLE

Да, НО
1. проверить отдает ли именно 301 редирект.
2. убедиться все ли корректно работает

Я просто немного не пойму, лучше делать редирект или закрывать в robots.txt, во втором случае, если я правильно понял, ПС блокирует ссылки которые ранее были добавлены в индекс и со временем просто их удаляет САМА, а уже новые добавляются? Добавляя новые, правильные ссылки ПС не посчитает что это дубль уже проиндексированной /product/, НО уже закрытые мной в robots.txt

Как сделать проверку? Вроде перехожу по ранее индексированной ссылке от /product/, и принимает вроде нормальный вид ссылка, иными словами 301 работает!