Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 360 Ответов
  • 117633 Просмотров
*

TwistedAndy

  • Осваиваюсь на форуме
  • ***
  • 85
  • 22
Здравствуйте.

В данной теме я решил поделиться своими наработками по 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, 19:13:58 от TwistedAndy »

*

Taatshi

  • Support Team
  • *****
  • 4783
  • 452
Ссылки нерабочие(((
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

TwistedAndy

  • Осваиваюсь на форуме
  • ***
  • 85
  • 22
исправил

*

Taatshi

  • Support Team
  • *****
  • 4783
  • 452
А зачем два одинаковых файла? И это не модуль, это правка кода...  К тому же голый код в пдф засовывать... Ну, не знаю, проще было бы в txt формате дать.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3  /  ОТЗЫВЫ 
Минимальная ставка за платные услуги 1000 рэ Связь: telegram - Taatshi, почта - Taatshi на яндексе.

*

TwistedAndy

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

*

AmiGator

  • Осваиваюсь на форуме
  • ***
  • 56
  • 3
проверил, работает! даже в паре с HPRouter.
Автору респектос!
давно меня бесила эта тема и странно, что за столько лет никто не решил ее. А нет варианта, чтобы на 404 перебрасывала, а не на страницы?
мои сайты на Joomla www.amiseo.ru / www.amigator.ru

*

TwistedAndy

  • Осваиваюсь на форуме
  • ***
  • 85
  • 22
Можно и с 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

  • Захожу иногда
  • **
  • 13
  • 0
доволен как удав *DRINK*
Спасибо.

« Последнее редактирование: 23.03.2011, 17:05:34 от pionerfm »

*

Chikir

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

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

*

voldcher

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

*

Chikir

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

*

Chikir

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

*

TwistedAndy

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

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

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

*

skai

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

сорри - затупил. хорошее решение - тестим.
« Последнее редактирование: 04.04.2011, 14:29:00 от skai »
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------

*

Sobriquet-ChKA

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

 

*

mksm80

  • Захожу иногда
  • **
  • 19
  • -1
у меня почему-то не работает((
после добавления кода в файлы - появляется белый экран (я понимаю проблемы с php)
после удаления добавленного куска всё работает

*

Efanych

  • Группа развития
  • *****
  • 4317
  • 605
Отличное решение. На скорую руку поганял - работает. +
В закладки однозначно :)
Создание сайтов, шаблонов, помощь в решении проблем.

*

mksm80

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

*

Efanych

  • Группа развития
  • *****
  • 4317
  • 605
люди, подскажите как можно установить? Не получается, выскакивает белый экран и всё...
Если вы просто копируете с файла, там перенос строки получается на -
>
А нужно так ->
Создание сайтов, шаблонов, помощь в решении проблем.

*

mksm80

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

*

pionerfm

  • Захожу иногда
  • **
  • 13
  • 0
Столкнулся с проблемой, у меня один сайт заканчивается на /
Соответственно в .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);
?> )  то получаю бесконечное перенаправление.
Если это правило закоментирую то все нормально перенаправляется, но сайт уже проиндексирован с /
Подскажите кто может, как вылечить?

А на Joomla 1.6 данные изменения работают?

*

TwistedAndy

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

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

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

А на Joomla 1.6 данные изменения работают?
По идее должны.

*

pionerfm

  • Захожу иногда
  • **
  • 13
  • 0
TwistedAndy

Спасибо огромное. *DRINK* Работает.

*

neitrino

  • Новичок
  • *
  • 3
  • 0
А на 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, т.е. достаточно только этой строчки чтобы склеить сразу все дубли. В чем подвох ;D?

*

Sobriquet-ChKA

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

*

VP

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

*

Efanych

  • Группа развития
  • *****
  • 4317
  • 605
Цитировать
везде пишет "бесконечное перенаправление".
А SEF включён?
Создание сайтов, шаблонов, помощь в решении проблем.

*

VP

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

*

TwistedAndy

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

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