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

  • 55 Ответов
  • 19401 Просмотров

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

*

Оффлайн Trend

Здравствуйте. Очень нужна Ваша помощь в решении проблемы с клонированием 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, 14:05:49 от staticlight »

*

Оффлайн oriol

« Последнее редактирование: 06.02.2012, 05:09:45 от oriol »

*

Оффлайн Trend

Re: K2: Клоны URL
« Ответ #2 : 06.02.2012, 16: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, 17:39:10 от Trend »

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: K2: Клоны URL
« Ответ #3 : 07.02.2012, 13:05:31 »
Я решил эту проблему, используя суффикс .html
Точнее, не решил, по сути, но хотя бы поисковики, на мой взгляд, видят логичное "завершение" ссылки.
По крайней мере, Яндекс такие ссылки прекрасно кушает и дубли не плодит.
« Последнее редактирование: 07.02.2012, 13:08:44 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Trend

Re: K2: Клоны URL
« Ответ #4 : 08.02.2012, 00:27:43 »
Я решил эту проблему, используя суффикс .html ...
К сожалению, решить вторую проблему этот вариант не помог :-(
Получился нормальный адрес:
сайт.ком/категория/материал.html
прописываю любую ошибку в окончании:
сайт.ком/категория/матblablabla.html
сайт.ком/категория/материалblablabla
 - никакой 404-й ошибки, нормально грузится все графическое оформление страницы, все менюшки и т.д. ... только тело (там, где должен быть текст статьи, например) пустое ... блин ...
Теперь я понимаю, почему ПС никак не выбросят из индекса сотни устаревших и удаленных страниц такого типа - ошибку не дает, Теги Заголовка и Описания присутствуют...
Все, опустились руки. Уже просто не знаю, в каком направлении копать :-(
П.С.: Если что - больной сайт у меня в аккаунте указан. м.б. кто-то сталкивался с подобным?

*

Оффлайн Trend

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

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: K2: Клоны URL
« Ответ #6 : 08.02.2012, 14:27:50 »
Все-таки идеальное решение - использовать сторонний компонент. Все-таки 40 баксов в год - не такая большая плата.
А так, если доброжелатели вас спамят дублями - сделайте редирект с дублей.
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Trend

Re: K2: Клоны URL
« Ответ #7 : 10.02.2012, 01: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

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: K2: Клоны URL
« Ответ #8 : 11.02.2012, 14: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
« Последнее редактирование: 30.06.2013, 00:50:14 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #9 : 11.02.2012, 14: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

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #10 : 11.02.2012, 14:11:46 »
Efanych, мужик!
Всем плюсы и пиво!
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #11 : 11.02.2012, 14:46:07 »
Следует отметить, что при этом редиректе перестанет работать страница печати, вернее работать не перестанет, но будет выводиться с полным шаблоном. Ну и любые другие попытки передачи параметров через урл не пройдут.
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #12 : 14.02.2012, 18:12:16 »
Ахтунг!

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

« Последнее редактирование: 14.02.2012, 18:24:16 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #13 : 14.02.2012, 18:38:36 »
Для вывода на главную в com_content есть отдельный шаблон (блог материалов на главной). В К2 нету?
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #14 : 14.02.2012, 19:31:16 »
В к2 любой категории можно присвоить шаблон, но шаблоны для k2 имеют вид: папка с файлами.
Файлы в папке отвечают за вывод материала, категории, блога, тегов и т.д.
« Последнее редактирование: 14.02.2012, 19:42:42 от staticlight »
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #15 : 14.02.2012, 19:44:15 »
А. Тогда всё правильно. Нужно отдельный шаблон для главной. И тогда можна избавиться от дублей главной. Как выглядит урл главной, если перейти на вторую страницу по пагинации?
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #16 : 14.02.2012, 19:55:06 »
http://www.домен.ru/index.php?start=5
То есть, все верно.

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

http://www.домен.ru/псевдоним_главной?start=5
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #17 : 14.02.2012, 19: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

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #18 : 14.02.2012, 20:03:04 »
А чтобы с главной на псевдоним не перекидывало, что нужно  тут
<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,'','' ,true);
?>

поменять?
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #19 : 14.02.2012, 20: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

Re: Решение проблемы с клонами URL в k2
« Ответ #20 : 14.02.2012, 22:22:23 »
У меня главная страница - Материал К2. Всегда отображается в виде: хттп://сайт.ком
Еще давным давно, когда у меня карта сайта выдавала главную в виде: хттп://сайт.ком/home ,
Зашел в СУБД (phpMyAdmin) и удалил алиас у пункта меню главной страницы в таблице jos_menu

*

Оффлайн staticlight

  • *****
  • 1090
  • [+]65 / [-]0
  • Пол: Мужской
  • Staticlight
    • Просмотр профиля
Re: Решение проблемы с клонами URL в k2
« Ответ #21 : 14.02.2012, 23:21:11 »
У меня главная страница - Материал К2. Всегда отображается в виде: хттп://сайт.ком
Еще давным давно, когда у меня карта сайта выдавала главную в виде: хттп://сайт.ком/home ,
Зашел в СУБД (phpMyAdmin) и удалил алиас у пункта меню главной страницы в таблице jos_menu

Проще было редирект 301 прописать
Руководитель отдела сервисного обслуживания систем безопасности.
Устали от com_content - поставьте com_k2.
TRIPLE "F" POWER: Firefox+FireShot+Firebug. Chrome + Ctrl+Shift+I

*

Оффлайн xilgiz

Re: Решение проблемы с клонами URL в k2
« Ответ #22 : 15.04.2012, 09: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. Как убрать дубли такого рода?

Re: Решение проблемы с клонами URL в k2
« Ответ #23 : 08.07.2012, 03:04:56 »
Ребята проконсультируйте пожалуйства. У меня Joomla 1.5 и k2 2.5. Я когда настраивала сайт и он про индексировался не указала отображение страниц с *.html. Хотелось бы исправить это но при этом не потерять позиции в поиске. Подскажите как правильно через редирект это сделать. Что добавить в k2, что бы все работало как надо?

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

*

Оффлайн Langoliers

  • *****
  • 695
  • [+]67 / [-]2
  • Пол: Мужской
  • Если б Я изучал людей, то был бы паразитологом
    • Просмотр профиля
    • www.yazov.com
Re: Решение проблемы с клонами URL в k2
« Ответ #24 : 20.07.2012, 19: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

Re: Решение проблемы с клонами URL в k2
« Ответ #25 : 12.08.2012, 21: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

Re: Решение проблемы с клонами URL в k2
« Ответ #26 : 21.11.2012, 08:08:58 »
И так, прочитав и опробовав все методы описанные выше (включая плагин shnodoubles), я так и не решил свою проблему с дублями урлов K2.

Что имеется:
Joomla 2.5.8
K2 v2.5.7 с модифицированным роутером (чтобы избавиться от item в урле):
[spoiler]<?php
/**
 * @version $Id: router.php 1492 2012-02-22 17:40:09Z joomlaworks@gmail.com $
 * @package K2
 * @author JoomlaWorks http://www.joomlaworks.net
 * @copyright Copyright (c) 2006 - 2012 JoomlaWorks Ltd. All rights reserved.
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

function 
K2BuildRoute( & $query) {

    
$segments = array ();

    
$menu = & JSite::getMenu();
    if ( empty(
$query['Itemid'])) {
        
$menuItem = & $menu->getActive();
    }
    else {
        
$menuItem = & $menu->getItem($query['Itemid']);
    }
    
$mView = ( empty($menuItem->query['view']))?null:$menuItem->query['view'];
    
$mTask = ( empty($menuItem->query['task']))?null:$menuItem->query['task'];
    
$mId = ( empty($menuItem->query['id']))?null:$menuItem->query['id'];
    
$mTag = ( empty($menuItem->query['tag']))?null:$menuItem->query['tag'];

    if ( isset (
$query['layout'])) {
        unset (
$query['layout']);
    }

    if ( 
$mView == @$query['view'] && $mTask == @$query['task'] && $mId == @intval($query['id']) &&  @intval($query['id']) > ) {
        unset (
$query['view']);
        unset (
$query['task']);
        unset (
$query['id']);
    }

    if ( 
$mView == @$query['view'] && $mTask == @$query['task'] && $mTag == @$query['tag'] && isset($query['tag']) ) {
        unset (
$query['view']);
        unset (
$query['task']);
        unset (
$query['tag']);
    }

    if ( isset (
$query['view'])) {
        
$view $query['view'];
        
$segments[] = $view;
        unset (
$query['view']);
    }

    if (@ isset (
$query['task'])) {
        
$task $query['task'];
        
$segments[] = $task;
        unset (
$query['task']);
    }

    if ( isset (
$query['id'])) {
        
$id $query['id'];
        
$segments[] = $id;
        unset (
$query['id']);
    }

    if ( isset (
$query['cid'])) {
        
$cid $query['cid'];
        
$segments[] = $cid;
        unset (
$query['cid']);
    }

    if ( isset (
$query['tag'])) {
        
$tag $query['tag'];
        
$segments[] = $tag;
        unset (
$query['tag']);
    }

    if ( isset (
$query['year'])) {
        
$year $query['year'];
        
$segments[] = $year;
        unset (
$query['year']);
    }

    if ( isset (
$query['month'])) {
        
$month $query['month'];
        
$segments[] = $month;
        unset (
$query['month']);
    }

    if ( isset (
$query['day'])) {
        
$day $query['day'];
        
$segments[] = $day;
        unset (
$query['day']);
    }

    if ( isset (
$query['task'])) {
        
$task $query['task'];
        
$segments[] = $task;
        unset (
$query['task']);
    }
     
// Изменения.
    
if(isset($segments[0]))
    {
    if(
$segments[0]=='item')
    {
    
$alias explode(':',$segments[1]);
    
$segments[0]=null;
    
$segments[1]=$alias[1];
    }
    }
    
// Изменения. Конец.
    
return $segments;
}

function 
K2ParseRoute($segments) {
    
$vars = array ();

// Изменения.
    
$id false;
    if(
count($segments)==1)
    {
    
$alias $segments[0];
    
$alias str_replace ':' '-' $alias);
    
$db = &JFactory::getDBO();
    
$query 'SELECT id FROM `#__k2_items` WHERE alias = "'.$alias.'" LIMIT 1';
    
$db->setQuery($query);
    
$id $db->loadResult();
    }

    if(
$id)
    {
    
$vars['view'] = 'item';
    
$vars['task'] = $id.':'.$alias;
    
$vars['id'] = $vars['task'];
    }else{
    
// Изменения. Конец.

    
$vars['view'] = $segments[0];
    if (!isset(
$segments[1]))
        
$segments[1]='';
    
$vars['task'] = $segments[1];

    if (
$segments[0] == 'itemlist') {

        switch(
$segments[1]) {

            case 
'category':
                
$vars['id'] = $segments[2];
                break;

            case 
'tag':
                if (isset(
$segments[2]))
                    
$vars['tag'] = $segments[2];
                break;

            case 
'user':
                if (isset(
$segments[2]))
                    
$vars['id'] = $segments[2];
                break;

            case 
'date':
                if (isset(
$segments[2]))
                    
$vars['year'] = $segments[2];
                if (isset(
$segments[3]))
                    
$vars['month'] = $segments[3];
                if (isset(
$segments[4])) {
                    
$vars['day'] = $segments[4];
                }
                break;

        }

    }

    else if (
$segments[0] == 'item') {

        switch(
$segments[1]) {

            case 
'edit':
                if (isset(
$segments[2]))
                    
$vars['cid'] = $segments[2];
                break;

            case 
'download':
                if (isset(
$segments[2]))
                    
$vars['id'] = $segments[2];
                break;

            default:
                
$vars['id'] = $segments[1];
                break;

        }

    }

if($segments[0] == 'comments' && isset($segments[1]) && $segments[1] == 'reportSpammer') {
$vars['id'] = $segments[2];
}
    
// Изменения.
    
}
    
// Изменения. Конец.
    
return $vars;
}
[/spoiler]
Xmap 2.2.1 с фиксом для нормального отображения ссылок в карте
JCH Optimize 2.0.2
Содержание .htaccess:
[spoiler]AddDefaultCharset UTF-8
RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]
RewriteCond %{HTTP_HOST} ^www.kim095\.com$ [NC]
RewriteRule ^(.*)$ http://kim095.com/$1 [R=301,L]
# @package Joomla
# @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your SEF url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.
[/spoiler]

В качестве главной страницы был выбран тип пункта меню Новые материалы от одного или нескольких пользователей или категорий. Там указал в качестве контента категорию, выбрал категорию Новости с материалами (алиас 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, 08:17:57 от kim095 »

*

Оффлайн Efanych

Re: Решение проблемы с клонами URL в k2
« Ответ #27 : 21.11.2012, 12:19:13 »
Цитировать
И так, прочитав и опробовав все методы описанные выше (включая плагин shnodoubles), я так и не решил свою проблему с дублями урлов K2.
Даже не знаю, чем вам помочь. Все случаи "неработоспособности" заключались в невнимательности. А в чём у вас проблема?
Вот ещё почитайте
Избавление от дублей страниц в Joomla! с помощью 301 редиректа
Создание сайтов, шаблонов, помощь в решении проблем.

*

Оффлайн kim095

Re: Решение проблемы с клонами URL в k2
« Ответ #28 : 23.11.2012, 23:20:28 »
Даже не знаю, чем вам помочь. Все случаи "неработоспособности" заключались в невнимательности. А в чём у вас проблема?
Вот ещё почитайте
Избавление от дублей страниц в Joomla! с помощью 301 редиректа

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

*

Оффлайн klara7

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

А может для начала попробовать через роботс неправильный дубль закрыть?
типа
Disallow: /component/k2/*