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

TwistedAndy

  • Захожу иногда
  • 84
  • 23 / 1
Здравствуйте.

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

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Ссылки нерабочие(((
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

TwistedAndy

  • Захожу иногда
  • 84
  • 23 / 1
исправил
*

Taatshi

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

TwistedAndy

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

AmiGator

  • Захожу иногда
  • 56
  • 3 / 0
проверил, работает! даже в паре с HPRouter.
Автору респектос!
давно меня бесила эта тема и странно, что за столько лет никто не решил ее. А нет варианта, чтобы на 404 перебрасывала, а не на страницы?
*

TwistedAndy

  • Захожу иногда
  • 84
  • 23 / 1
Можно и с 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 / 0
доволен как удав *DRINK*
Спасибо.

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

Chikir

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

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

voldcher

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

Chikir

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

Chikir

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

TwistedAndy

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

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

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

skai

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

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

Sobriquet-ChKA

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

 
*

mksm80

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

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Отличное решение. На скорую руку поганял - работает. +
В закладки однозначно :)
Создание сайтов, шаблонов, помощь в решении проблем.
*

mksm80

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

Efanych

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

mksm80

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

pionerfm

  • Осваиваюсь на форуме
  • 13
  • 0 / 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

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

<?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 / 0
TwistedAndy

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

neitrino

  • Новичок
  • 3
  • 0 / 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 / 0
TwistedAndy
Как через php сделать, чтобы страницы, заканчивающиеся на "/" и на ".html" выдавали 404? Чтобы при этом не пострадали страницы находящиеся на следующем уровне
*

VP

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

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Цитировать
везде пишет "бесконечное перенаправление".
А SEF включён?
Создание сайтов, шаблонов, помощь в решении проблем.
*

VP

  • Захожу иногда
  • 72
  • 5 / 0
А SEF включён?
да, включен стандартный джумловский.
*

TwistedAndy

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

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

Не работают SEF-ссылки на Joomla 5

Автор Detonator

Ответов: 0
Просмотров: 717
Последний ответ 08.04.2024, 10:02:59
от Detonator
Расширение SEF Wizard — улучшение маршрутизации и ЧПУ в Joomla! Инструменты SEO - администратора

Автор Филипп Сорокин

Ответов: 525
Просмотров: 49137
Последний ответ 22.10.2022, 12:14:38
от Lemonez
Как убрать ID из URL Joomla 3?

Автор SaxMusicOnly

Ответов: 142
Просмотров: 56709
Последний ответ 02.03.2021, 14:47:35
от Vasiliy111
Редирект со страниц *.php на главную через htaccess ~

Автор kiev

Ответов: 0
Просмотров: 1927
Последний ответ 07.02.2021, 15:29:04
от kiev
Как прописать "canonical" для всех страниц с поддомена на домен?

Автор misteri27

Ответов: 11
Просмотров: 5670
Последний ответ 12.09.2020, 10:41:07
от webzepa