Форум русской поддержки Joomla!® CMS
03.12.2016, 19:45:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Решение проблемы с клонами URL в k2

 (Прочитано 17908 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« : 06.02.2012, 02:04:56 »

Здравствуйте. Очень нужна Ваша помощь в решении проблемы с клонированием URL в К2 (Где-то видел уже решение, только сейчас никак не могу найти, где именно).
По мере развития проэкта, находятся "Доброжелатели", добавляющие "Неправильные" ссылки-дубликаты к популярным страницам сайта.
Описание проблемы 1:
Есть хорошая, рабочая, проиндексированная ссылка:
сайт.ком/категория/item/01-alias
Начинают всплывать клоны:
сайт.ком/категория/item/01blablabla
сайт.ком/категория/item/01blablablabla
сайт.ком/категория/item/01blablablablabla
Содержимое по всем клонам такое-же, как по нормальной ссылке, в т.ч. идентичные Title, Description и т.д.

Описание проблемы 2:
Есть рабочая, проиндексированная ссылка на материал с выводом через меню:
сайт.ком/категория/материал
Появляются URL
сайт.ком/категория/м
сайт.ком/категория/мат
сайт.ком/категория/материалblablabla
В этих случаях, Title и Description такие-же, как у категории, только тело страницы без текста

Работает стандартный плагин SEF, активный mod_rewrite, Joomla: 1.5.25, K2: 2.4.1. Использование сторонних SEF, обновление Joomla и K2 - исключено.
Пожалуйста, подскажите, каким образом я могу заставить выдавать 404-ошибку при неверном вводе URL, чтоб исключить появление таких клонов в дальнейшем?
Заранее спасибо.
« Последнее редактирование: 11.02.2012, 12:05:49 от staticlight » Записан
 
oriol
Живу я здесь
******

Репутация: +100/-4
Offline Offline

Сообщений: 1057


« Ответ #1 : 06.02.2012, 03:06:31 »

http://joomlaforum.ru/index.php/topic,186275.0.html
http://joomlaforum.ru/index.php/topic,156030.0.html
« Последнее редактирование: 06.02.2012, 03:09:45 от oriol » Записан
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« Ответ #2 : 06.02.2012, 14:12:12 »

oriol, Спасибо за оперативный ответ. Ткнули носом :-).
Проследовал советам из первой ссылки (видел раньше эту тему, только не до конца понимал результат), частично вопрос решился:
Цитировать
Теперь, если имеем правильную ссылку, вида
сайт.ком/категория/item/01-alias
и вписываем неправильную, вида
сайт.ком/категория/item/01-blablabla
 - дает ошибку 404 (к этому я и стремился)

если прописать неправильно, вроде
сайт.ком/категория/item/01-alias blablabla
- страница отображается, как обычно, но в исходном коде, в теге link href указан правильный адрес:
<link href="хттп://сайт.ком/категория/item/01-alias" rel="canonical"  />
Я так понимаю, что в этом случае неправильный вариант никак не попадет в индекс ПС и не нужно париться, чтоб и на него давало ошибку 404?

По второй ссылке - использовал вариант, предложенный пользователем Efanych (за что ему большое спасибо), а именно:
Цитировать
добавил в файл: components/com_k2/templates/default/item.php
следующий код:
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
Теперь при вводе неправильного адреса из первой проблемы, происходит перенаправление на правильный URL.
По этих двух вариантах возник вопрос: Какой из них лучше использовать, или оставить оба (и каноникал и перенаправление)?

Осталось решить вторую проблему (с выводом материала через меню):
Цитировать
Есть рабочая, проиндексированная ссылка на материал с выводом через меню:
сайт.ком/категория/материал
Появляются URL
сайт.ком/категория/м
сайт.ком/категория/мат
сайт.ком/категория/материалblablabla

В этих случаях, Title и Description такие-же, как у категории, только тело страницы без текста
« Последнее редактирование: 06.02.2012, 15:39:10 от Trend » Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #3 : 07.02.2012, 11:05:31 »

Я решил эту проблему, используя суффикс .html
Точнее, не решил, по сути, но хотя бы поисковики, на мой взгляд, видят логичное "завершение" ссылки.
По крайней мере, Яндекс такие ссылки прекрасно кушает и дубли не плодит.
« Последнее редактирование: 07.02.2012, 11:08:44 от staticlight » Записан
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« Ответ #4 : 07.02.2012, 22:27:43 »

Я решил эту проблему, используя суффикс .html ...
К сожалению, решить вторую проблему этот вариант не помог :-(
Получился нормальный адрес:
сайт.ком/категория/материал.html
прописываю любую ошибку в окончании:
сайт.ком/категория/матblablabla.html
сайт.ком/категория/материалblablabla
 - никакой 404-й ошибки, нормально грузится все графическое оформление страницы, все менюшки и т.д. ... только тело (там, где должен быть текст статьи, например) пустое ... блин ...
Теперь я понимаю, почему ПС никак не выбросят из индекса сотни устаревших и удаленных страниц такого типа - ошибку не дает, Теги Заголовка и Описания присутствуют...
Все, опустились руки. Уже просто не знаю, в каком направлении копать :-(
П.С.: Если что - больной сайт у меня в аккаунте указан. м.б. кто-то сталкивался с подобным?
Записан
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« Ответ #5 : 08.02.2012, 00:08:17 »

Заметил еще больше ньюансов:
Допустим, имеем нормальную ссылку:
сайт.ком/категория/подкатегория/item/01-alias
с финальной частью (01-alias) все ясно, добавили 1 строчку в код item.php и теперь перенаправляет куда надо (при ошибке ввода)...
Более интересна предыдущая часть ссылки:
сайт.ком/категория/подкатегория/item
Условно разобью ее на 4 блока:
сайт.ком - Ну здесь все ясно (меняю букву - попадаю на др. сайт) - Хорошо
категория - При изменении этой части, получаю 404-ошибку - Хорошо
подкатегория - При изменении получаю пустой шаблон страницы - Плохо
item - При изменении получаю пустой шаблон страницы - Плохо
__________
Попробовал только что создать Раздел, Категорию, материал - средствами самой Joomla (не через К2) и прописал под них пункты меню и подменю - при изменении любой буквы в ссылке (на любом уровне) - получаю 404 ошибку (идеальный результат).
Из этого делаю вывод, что проблема не в настройках Joomla, не в настройках сервера - а именно в К2
« Последнее редактирование: 08.02.2012, 00:25:00 от Trend » Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #6 : 08.02.2012, 12:27:50 »

Все-таки идеальное решение - использовать сторонний компонент. Все-таки 40 баксов в год - не такая большая плата.
А так, если доброжелатели вас спамят дублями - сделайте редирект с дублей.
Записан
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« Ответ #7 : 09.02.2012, 23:11:09 »

Проблема решилась путем добавления строчки в файле /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'));
}
Ну и, соответственно, в файле локализации /language/ru-RU/ru-RU.com_k2.ini добавляем поле:
Код:
K2_404=Страница не найдена
П.С.: Большое спасибо Efanych за участие
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #8 : 11.02.2012, 12:03:36 »

Свершилось! Потестил, все охрененно.
Итого: резюмируем.

Для k2 2.5-2.6.x делаем:

Код:
добавляем в файл: components/com_k2/templates/default/item.php
следующий код:
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
Теперь при вводе неправильного адреса из первой проблемы, происходит перенаправление на правильный URL.


Для k2 2.4.1

1)

Код:
добавляем в файл: components/com_k2/templates/default/item.php
следующий код:
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
Теперь при вводе неправильного адреса из первой проблемы, происходит перенаправление на правильный URL.



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'));
}
Ну и, соответственно, в файле локализации /language/ru-RU/ru-RU.com_k2.ini добавляем поле:
Код:
K2_404=Страница не найдена
П.С.: Большое спасибо Efanych за участие


Добавляем в FAQ
« Последнее редактирование: 29.06.2013, 22:50:14 от staticlight » Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #9 : 11.02.2012, 12:10:19 »

От дублей категорий тоже можна избавиться таким же макаром.
Цитировать
components/com_k2/templates/default/category_item.php

<?php
$this->original_link = JRoute::_(K2HelperRoute::getCategoryRoute(JRequest::getVar('id'),
0));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #10 : 11.02.2012, 12:11:46 »

Efanych, мужик!
Всем плюсы и пиво!
Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #11 : 11.02.2012, 12:46:07 »

Следует отметить, что при этом редиректе перестанет работать страница печати, вернее работать не перестанет, но будет выводиться с полным шаблоном. Ну и любые другие попытки передачи параметров через урл не пройдут.
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #12 : 14.02.2012, 16:12:16 »

Ахтунг!

После применения решения редиректит с главной страницы на псевдоним, если у главной страницы стоит тип "категория K2" или "материал K2".
Лечим: делаем дубль шаблона (без вышеописанных условий в файлах) и применяем его к категории, в которой содержится (содержатся) материал(ы) главной.

« Последнее редактирование: 14.02.2012, 16:24:16 от staticlight » Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #13 : 14.02.2012, 16:38:36 »

Для вывода на главную в com_content есть отдельный шаблон (блог материалов на главной). В К2 нету?
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #14 : 14.02.2012, 17:31:16 »

В к2 любой категории можно присвоить шаблон, но шаблоны для k2 имеют вид: папка с файлами.
Файлы в папке отвечают за вывод материала, категории, блога, тегов и т.д.
« Последнее редактирование: 14.02.2012, 17:42:42 от staticlight » Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #15 : 14.02.2012, 17:44:15 »

А. Тогда всё правильно. Нужно отдельный шаблон для главной. И тогда можна избавиться от дублей главной. Как выглядит урл главной, если перейти на вторую страницу по пагинации?
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #16 : 14.02.2012, 17:55:06 »

http://www.домен.ru/index.php?start=5
То есть, все верно.

Если не юзать другой шаблон, то будет вида:

http://www.домен.ru/псевдоним_главной?start=5
Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #17 : 14.02.2012, 17:58:30 »

Юзать, только прописать условие редиректа для главной
Цитировать
<?php
$this->original_link = "/";
if (JRequest::getInt('start') > 0) $this->original_link .= "index.php?start=" .
JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
Не пробовал, но вроде условие такое, как и для главной com_content
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #18 : 14.02.2012, 18:03:04 »

А чтобы с главной на псевдоним не перекидывало, что нужно  тут
Код:
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
поменять?
Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #19 : 14.02.2012, 18:05:46 »

На главную нужно отдельный шаблон назначить и в том файле, что будет выводиться (материал или блог категории) прописать
Цитировать
<?php
$this->original_link = "/";
if (JRequest::getInt('start') > 0) $this->original_link .= "index.php?start=" .
JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>
Все предыдущие условия не нужны в этом шаблоне.
Записан
Trend
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 26



« Ответ #20 : 14.02.2012, 20:22:23 »

У меня главная страница - Материал К2. Всегда отображается в виде: хттп://сайт.ком
Еще давным давно, когда у меня карта сайта выдавала главную в виде: хттп://сайт.ком/home ,
Зашел в СУБД (phpMyAdmin) и удалил алиас у пункта меню главной страницы в таблице jos_menu
Записан
staticlight
Moderator
*****

Репутация: +65/-0
Offline Offline

Пол: Мужской
Сообщений: 1090


Staticlight


« Ответ #21 : 14.02.2012, 21:21:11 »

У меня главная страница - Материал К2. Всегда отображается в виде: хттп://сайт.ком
Еще давным давно, когда у меня карта сайта выдавала главную в виде: хттп://сайт.ком/home ,
Зашел в СУБД (phpMyAdmin) и удалил алиас у пункта меню главной страницы в таблице jos_menu

Проще было редирект 301 прописать
Записан
xilgiz
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 129


« Ответ #22 : 15.04.2012, 07:52:57 »

А у меня вот такая проблема с клонами:
Поставил плагин пагинации UberPageBreak
Сейчас ставлю в статью пагинацию, захожу в статью
http://сфйт.ру/materialy/knigi/item/1-статья.html
перехожу на следующую страницу, получается
http://сфйт.ру/materialy/knigi/item/1-статья/1-статья.html?start=1
Если обратно перейти, получается
http://сфйт.ру/materialy/knigi/item/1-статья/1-статья.html
т.е. дубль первой страницы статьи.
Два вопроса:
1. Как сделать
http://сфйт.ру/materialy/knigi/item/1-статья.html?start=1 а не http://сфйт.ру/materialy/knigi/item/1-статья/1-статья.html?start=1
2. Как убрать дубли такого рода?
Записан
Light_And_Dark
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 62


« Ответ #23 : 08.07.2012, 01:04:56 »

Ребята проконсультируйте пожалуйства. У меня Joomla 1.5 и k2 2.5. Я когда настраивала сайт и он про индексировался не указала отображение страниц с *.html. Хотелось бы исправить это но при этом не потерять позиции в поиске. Подскажите как правильно через редирект это сделать. Что добавить в k2, что бы все работало как надо?

Достаточно ли для этой цели решения:
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>
Записан
Langoliers
Завсегдатай
*****

Репутация: +67/-2
Offline Offline

Пол: Мужской
Сообщений: 693


Если б Я изучал людей, то был бы паразитологом


« Ответ #24 : 20.07.2012, 17:41:37 »

Ребят, нашел, на мой взгляд, новый косяк =(
Пока штудирую форум, но вроде решения не нашел...
В общем вот пример:
Заходим в демку, например в эту категорию http://demo.getk2.org/user-blog справа находим несколько юзеров и смотрим на то, какие на них ссылки есть: http://demo.getk2.org/user-blog/itemlist/user/45-andy-williams
Теперь идем в другую категорию: http://demo.getk2.org/category-blog и видим, что ссылка на пользователя, а так же на все его материалы изменилась http://demo.getk2.org/category-blog/itemlist/user/45-andy-williams
Я прямо в шоке... Сначала думал что у себя накосячил... При этом у меня прописан rel Canonical и он выводится на всех вариантах, что еще хуже...
Собственно я собираюсь иcпользовать sh404SEF. Уже и купил его, да и ресурс у меня будет немаленький...
Записан
andreiz
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 75



« Ответ #25 : 12.08.2012, 19:28:02 »

Здравствуйте. Подскажите пожалуйста как избавиться от дублей страниц:
Когда с главной или с категории переходишь в статью у нее урл такой
http://site.ru/index.php/punkt-menu/news-categories/world/item/50-alis
Но эта же статья доступна по таким урл
http://site.ru/item/50-alis
http://site.ru/index.php/item/50-alis
Как избавиться?
Записан
kim095
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 3



« Ответ #26 : 21.11.2012, 06:08:58 »

И так, прочитав и опробовав все методы описанные выше (включая плагин shnodoubles), я так и не решил свою проблему с дублями урлов K2.

Что имеется:
Joomla 2.5.8
K2 v2.5.7 с модифицированным роутером (чтобы избавиться от item в урле):
Показать текстовый блок
Xmap 2.2.1 с фиксом для нормального отображения ссылок в карте
JCH Optimize 2.0.2
Содержание .htaccess:
Показать текстовый блок

В качестве главной страницы был выбран тип пункта меню Новые материалы от одного или нескольких пользователей или категорий. Там указал в качестве контента категорию, выбрал категорию Новости с материалами (алиас news).

Изначально ситуация казалась только такой:
Ссылка на материал с главной страницы имеет такой вид http://kim095.com/component/k2/вышло-обновление-дашборда-16197
при этом карта сайта показывает всё как надо http://kim095.com/вышло-обновление-дашборда-16197

3 дня с бессонными ночами было потрачено на попытки поиска исправления данной проблемы отображения component/k2 в URL`е. И вот сегодня всплыла ещё одна.
Зайдя в инструменты для веб-мастеров от Google, обнаружил ошибку сканирования URL http://kim095.com/component/k2/ustanovka-freeboot-rgh (код ответа 404).

Пожалуйста, помогите избавиться от этих чёртовых дублей.
« Последнее редактирование: 21.11.2012, 06:17:57 от kim095 » Записан
Efanych
Группа развития
*****

Репутация: +602/-0
Online Online

Пол: Мужской
Сообщений: 4317



« Ответ #27 : 21.11.2012, 10:19:13 »

Цитировать
И так, прочитав и опробовав все методы описанные выше (включая плагин shnodoubles), я так и не решил свою проблему с дублями урлов K2.
Даже не знаю, чем вам помочь. Все случаи "неработоспособности" заключались в невнимательности. А в чём у вас проблема?
Вот ещё почитайте
Избавление от дублей страниц в Joomla! с помощью 301 редиректа
Записан
kim095
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 3



« Ответ #28 : 23.11.2012, 21:20:28 »

Даже не знаю, чем вам помочь. Все случаи "неработоспособности" заключались в невнимательности. А в чём у вас проблема?
Вот ещё почитайте
Избавление от дублей страниц в Joomla! с помощью 301 редиректа

Проблема в том, что в URL`ах появляется component/k2/. Явно это видно только с главной страницы. В карте сайта всё ОК.
Ещё хуже, что Google видит component/k2/ и в других категориях (пока выдал ошибку сканирования только в одном материале).
В общем, проблема в типе пункта меню K2 Новые материалы от одного или нескольких пользователей или категорий.
Как исправить эту траблу я понятия не имею. Тут еще не возникало вопросов с этим пунктом меню. Я, походу, первый.
Записан
klara7
Давно я тут
****

Репутация: +3/-1
Offline Offline

Пол: Женский
Сообщений: 289



« Ответ #29 : 01.01.2013, 18:32:17 »

Проблема в том, что в URL`ах появляется component/k2/. Явно это видно только с главной страницы. В карте сайта всё ОК.
Ещё хуже, что Google видит component/k2/ и в других категориях (пока выдал ошибку сканирования только в одном материале).
В общем, проблема в типе пункта меню K2 Новые материалы от одного или нескольких пользователей или категорий.
Как исправить эту траблу я понятия не имею. Тут еще не возникало вопросов с этим пунктом меню. Я, походу, первый.

А может для начала попробовать через роботс неправильный дубль закрыть?
типа
Disallow: /component/k2/*
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet