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

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

Решение проблемы с дублями страниц в Joomla 1.5

 (Прочитано 112882 раз)
CaHeK_pk и 1 Гость смотрят эту тему.
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« : 13.03.2011, 06:28:02 »

Здравствуйте.

В данной теме я решил поделиться своими наработками по Joomla 1.5. Может кому-то пригодятся.


Недавно в процессе поискового продвижения сайта на Joomla 1.5 столкнулся с одной весьма серьезной проблемой встроенного механизма ЧПУ (SEF).

Суть проблемы заключается в том, что в Joomla одна и та же страница site.ru/news/tech/1-news.html, например, может быть доступна по очень многим адресам:

site.ru/index.php?option=com_content&view=article&id=22
site.ru/news/tech/1.html/
site.ru/news/2-tech/1-news.html
site.ru/1-news/2-tech/1dsfsdkgjdfgklhfdgjf
site.ru/home/1.html
site.ru/component/content/frontpage....

Проблема весьма серьезная. Аналогично и с категориями, с site.ru/, site.ru/index.php, с разделами и так далее.

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

Особого желания играться с редиректами в htaccess у меня не было, robots.txt тоже не вариант. Ну закрою я в robots.txt site.ru/index.php, ну а что делать с вариантами вроде site.ru/news/2-tech/1-news.htgjfhgsldfjkgd ?

Как частичное решение ситуации можно было бы рассмотреть sh404SEF, но опять же. Это стороннее решение, оно все же снижает производительность и стабильность работы системы в целом, ИМХО.

Вот и стал я искать выход. Решение оказалось очень простым: нужно при генерации страницы раздела, категории, статьи, главной страницы сравнивать адрес в запросе с вычисленным адресом страницы в системе. Вычисляется он на основе расположения страницы в меню, на основании псеводонимов (alias), идентификаторов, а также на основании раздела/категории. Для одной страницы существует лишь один так называемый системный адрес. Он используется по-умолчанию при генерации ссылок в системе.

Если адрес в запросе не совпадает с системным адресом страницы, то движок с помощью 301 редиректа перебросит пользователя или поискового бота на нужную страницу. Таким вот образом дубли страниц оперативно склеиваются поисковиками по 301 редиректу.

Для лучшей совместимости эту проверку я вынес в код шаблона. Да, это прямое нарушение концепции MVC, но это все же лучше чем правка системных файлов ручками при каждом обновлении. Если кому-то решение не понравится - можете аналогичным образом поправить контроллер com_content.

Данный модуль был протестирован на Joomla 1.5.22 со стандартным ЧПУ и com_content. Данный модуль должен заработать и на 1.6.


Ссылки на код модуля с подробным описанием и установкой: скачать / скачать.

Большая человеческая просьба не перезаливать архивы на другие файлообменники и не публиковать код с описанием на других страницах без моего разрешения. Просто кидаете ссылки на архивы. Отнеситесь к этому с пониманием.
« Последнее редактирование: 13.03.2011, 18:13:58 от TwistedAndy » Записан
Taatshi
Support Team
*****

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

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

Мама, я снова верстал во сне...


« Ответ #1 : 13.03.2011, 18:08:55 »

Ссылки нерабочие(((
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #2 : 13.03.2011, 18:14:15 »

исправил
Записан
Taatshi
Support Team
*****

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

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

Мама, я снова верстал во сне...


« Ответ #3 : 13.03.2011, 20:04:49 »

А зачем два одинаковых файла? И это не модуль, это правка кода...  К тому же голый код в пдф засовывать... Ну, не знаю, проще было бы в txt формате дать.
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #4 : 13.03.2011, 20:12:48 »

А зачем два одинаковых файла? И это не модуль, это правка кода...  К тому же голый код в пдф засовывать... Ну, не знаю, проще было бы в txt формате дать.
Одна ссылка запасная, вторая резервная. В PDF текст выделять и копировать можно
Записан
AmiGator
Осваиваюсь на форуме
***

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

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


« Ответ #5 : 13.03.2011, 21:38:56 »

проверил, работает! даже в паре с HPRouter.
Автору респектос!
давно меня бесила эта тема и странно, что за столько лет никто не решил ее. А нет варианта, чтобы на 404 перебрасывала, а не на страницы?
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #6 : 13.03.2011, 21:59:39 »

Можно и с 404 ошибкой.

Для этого нужно в модуле для статьи, например,

if ($this->article->readmore_link != JRequest::getURI()) JApplication::redirect($this->article->readmore_link);

заменить на

if ($this->article->readmore_link != JRequest::getURI()) {
header("HTTP/1.0 404 Not Found");
header('Location: /');
die();
}

Будет сгенерирована 404 ошибка с редиректом на главную. Аналогично делается и для других шаблонов.
Записан
pionerfm
Захожу иногда
**

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

Сообщений: 13


« Ответ #7 : 19.03.2011, 20:41:02 »

доволен как удав drink
Спасибо.

« Последнее редактирование: 23.03.2011, 16:05:34 от pionerfm » Записан
Chikir
Осваиваюсь на форуме
***

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

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



« Ответ #8 : 24.03.2011, 20:04:03 »

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

Страницы вида
http://www.сайт.ru/раздел/категория
так и остаются в  виде
http://www.сайт.ru/раздел/категория
а нужно
http://www.сайт.ru/раздел/категория.html
Как это сделать?
« Последнее редактирование: 24.03.2011, 21:36:30 от Chikir » Записан
voldcher
Захожу иногда
**

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

Сообщений: 18


« Ответ #9 : 25.03.2011, 15:00:55 »

Время от времени Яндекс индексирует некоторые страницы с расширением htm вместо HTML. Иногда редирекчу 301м, но через какое-то время вылезают другие, тоже htm. Что за бред, никак не пойму...
Записан
Chikir
Осваиваюсь на форуме
***

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

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



« Ответ #10 : 25.03.2011, 18:45:22 »

А у меня еще появилась индексе страница http://ввв.сайт.ru/2011-01-06-08-52-31.html, которая по содержимому является копией главной. Что за бред? Из какого она компонента? И как ее удалить не ясно. Может кто подскажет?
Записан
Chikir
Осваиваюсь на форуме
***

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

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



« Ответ #11 : 26.03.2011, 20:08:57 »

Время от времени Яндекс индексирует некоторые страницы с расширением htm вместо HTML. Иногда редирекчу 301м, но через какое-то время вылезают другие, тоже htm. Что за бред, никак не пойму...
Действительно, данный глюк тоже замечал((
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #12 : 31.03.2011, 04:31:55 »

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

Страницы вида
http://www.сайт.ru/раздел/категория
так и остаются в  виде
http://www.сайт.ru/раздел/категория
а нужно
http://www.сайт.ru/раздел/категория.html
Как это сделать?
В настройках ЧПУ расширение HTML указано?

А у меня еще появилась индексе страница http://ввв.сайт.ru/2011-01-06-08-52-31.html, которая по содержимому является копией главной. Что за бред? Из какого она компонента? И как ее удалить не ясно. Может кто подскажет?
Пропишите для той страницы псевдоним.
Записан
skai
Живу я здесь
******

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

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


skaiseo


« Ответ #13 : 04.04.2011, 04:22:38 »

после такого хака главная будет иметь адрес http://site.ru/glavnaya , тоесть просто http://site.ru всегда будет переадресовываться на http://site.ru/glavnaya.. неуверен что это хорошее решение. отныне адреса http://site.ru просто небудет существовать в индексе.

сорри - затупил. хорошее решение - тестим.
« Последнее редактирование: 04.04.2011, 12:29:00 от skai » Записан
Sobriquet-ChKA
Захожу иногда
**

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

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



« Ответ #14 : 04.04.2011, 13:29:06 »

В настройках ЧПУ расширение HTML указано?
Да. но уже убрал суффиксы. Получается та же страница доступна по адресам:
http://www.сайт.ru/раздел/категория
и
http://www.сайт.ru/раздел/категория/

 
Записан
mksm80
Захожу иногда
**

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

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



« Ответ #15 : 08.04.2011, 06:10:10 »

у меня почему-то не работает((
после добавления кода в файлы - появляется белый экран (я понимаю проблемы с php)
после удаления добавленного куска всё работает
Записан
Efanych
Группа развития
*****

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

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



« Ответ #16 : 08.04.2011, 11:40:11 »

Отличное решение. На скорую руку поганял - работает. +
В закладки однозначно Azn
Записан
mksm80
Захожу иногда
**

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

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



« Ответ #17 : 08.04.2011, 23:42:14 »

люди, подскажите как можно установить? Не получается, выскакивает белый экран и всё...
Записан
Efanych
Группа развития
*****

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

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



« Ответ #18 : 08.04.2011, 23:46:40 »

люди, подскажите как можно установить? Не получается, выскакивает белый экран и всё...
Если вы просто копируете с файла, там перенос строки получается на -
>
А нужно так ->
Записан
mksm80
Захожу иногда
**

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

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



« Ответ #19 : 09.04.2011, 00:40:00 »

Огромнейшая благодарность автору за единственное достойное пока решение по склейке дублей)))  и Efanych за быстрый отклик и помощь в настройке. +
Записан
pionerfm
Захожу иногда
**

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

Сообщений: 13


« Ответ #20 : 09.04.2011, 15:58:14 »

Столкнулся с проблемой, у меня один сайт заканчивается на /
Соответственно в .htaccess прописано:
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]

И если добавить предложенный код в article  (<?php defined('_JEXEC') or die('Restricted access');
if ($this->article->readmore_link != JRequest::getURI()) JApplication::redirect($this->article->readmore_link);
?> )  то получаю бесконечное перенаправление.
Если это правило закоментирую то все нормально перенаправляется, но сайт уже проиндексирован с /
Подскажите кто может, как вылечить?
Записан
still
Гость
« Ответ #21 : 09.04.2011, 20:17:59 »

А на Joomla 1.6 данные изменения работают?
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #22 : 10.04.2011, 04:08:27 »

Подскажите кто может, как вылечить?
Добавляем . '/' в условие по сравнению ссылок

<?php defined('_JEXEC') or die('Restricted access');
if ($this->article->readmore_link . '/' != JRequest::getURI()) JApplication::redirect($this->article->readmore_link);
?>

Может заработает.

А на Joomla 1.6 данные изменения работают?
По идее должны.
Записан
pionerfm
Захожу иногда
**

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

Сообщений: 13


« Ответ #23 : 10.04.2011, 09:32:46 »

TwistedAndy

Спасибо огромное. drink Работает.
Записан
neitrino
Новичок
*

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

Сообщений: 3


« Ответ #24 : 10.04.2011, 11:42:15 »

А на Joomla 1.6 данные изменения работают?
В /templates/название_вашего_шаблона/html/com_content/article/default.php после
Код:
// no direct access
defined('_JEXEC') or die;
добавляем
Код:
if ($this->item->readmore_link != JRequest::getURI()) JApplication::redirect($this->item->readmore_link);
И все...
В категориях и так редиректит на 404, т.е. достаточно только этой строчки чтобы склеить сразу все дубли. В чем подвох Grin?
Записан
Sobriquet-ChKA
Захожу иногда
**

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

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



« Ответ #25 : 10.04.2011, 19:14:42 »

TwistedAndy
Как через php сделать, чтобы страницы, заканчивающиеся на "/" и на ".html" выдавали 404? Чтобы при этом не пострадали страницы находящиеся на следующем уровне
Записан
VP
Осваиваюсь на форуме
***

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

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


« Ответ #26 : 10.04.2011, 21:28:11 »

не работает.
Joomla 1.5.21
Сделал все как указано в прикрепленном файле, при переносе кусков кода следил, чтобы не было неправильных переносов строк.
Главная страница открывается, но ни одна ссылка не работает везде пишет "бесконечное перенаправление".
Записан
Efanych
Группа развития
*****

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

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



« Ответ #27 : 10.04.2011, 21:46:08 »

Цитировать
везде пишет "бесконечное перенаправление".
А SEF включён?
Записан
VP
Осваиваюсь на форуме
***

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

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


« Ответ #28 : 10.04.2011, 22:05:16 »

А SEF включён?
да, включен стандартный джумловский.
Записан
TwistedAndy
Осваиваюсь на форуме
***

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

Сообщений: 85


« Ответ #29 : 12.04.2011, 01:16:22 »

TwistedAndy
Как через php сделать, чтобы страницы, заканчивающиеся на "/" и на ".html" выдавали 404? Чтобы при этом не пострадали страницы находящиеся на следующем уровне
На уровне htaccess делайте

не работает.
Joomla 1.5.21
Сделал все как указано в прикрепленном файле, при переносе кусков кода следил, чтобы не было неправильных переносов строк.
Главная страница открывается, но ни одна ссылка не работает везде пишет "бесконечное перенаправление".
Значит проверяйте ваш htaccess и почему происходит перенаправление.
Записан
Страниц: [1] 2 3 4 5 6 7 8 9 10 11 12   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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