Поиск
Последние записи:
- Нестандартные шрифты для сайта. Использование и рецепты.
- Определение региона посетителя сайта
- Команды работы с сервером для web-разработчика
- Настройки TinyMCE в MODx
- Как выбрать хостинг для сайта?
- CSS хаки. Особенности кроссбраузерной верстки.
- Уязвимости e107
- Установка DISQUS на сайт. Внешняя система комментариев
- Новогодний подарок для разработчиков сайтов
- 301 Редирект на Ucoz и не только…
Самое популярное:
- MODx Revolution vs MODx Evolution
- Дублирование контента в MODx
- Мета-теги и заголовки MODx
- Карта сайта и google sitemap в MODx
- Как подключить lightbox
- Проблема c кодировками MODx
- Мета-теги в MODx 1.0.2
- RSS лента на MODx
- CSS хаки. Особенности кроссбраузерной верстки.
- Установка DISQUS на сайт. Внешняя система комментариев
Мета
Категории:
Полезное
Архив
Дублирование контента в MODx
Категория 28 ноября 2009 in MODx
В MODx несмотря на очевидную SEO-ориентированность существует проблема дублирования контента при использовании ЧПУ (человеко-понятные адреса страниц).
Предположим, что существует страница с идентификатором 26 и псевдонимом alias в корне сайта.
Статус 200 Ok будут отдавать следующие страницы с ОДИНАКОВЫМ контентом
Эта ситуация неприемлема с точки зрения поисковой оптимизации. Решение этой проблемы видится в грамотно составленном файле robots.txt и некоторых изменениях в коде файла document.parser.class.inc.php.
Предлагаемый файл robots.txt подходит для всех проектов на MODx с использованием ЧПУ:
Disallow: /assets/cache/
Disallow: /assets/docs/
Disallow: /assets/export/
Disallow: /assets/import/
Disallow: /assets/modules/
Disallow: /assets/plugins/
Disallow: /assets/snippets/
Disallow: /install/
Disallow: /manager/
Disallow: /?
Disallow: /*?id=
Host: yoursite.ru
Составленный таким образом файл robots.txt не позволит поисковому роботу проиндексировать дублирующиеся страницы 4-ого типа. Повторю, его можно использовать ТОЛЬКО для сайтов на ЧПУ. Для исключения остальных дублей надо немного исправить document.parser.class.inc.php. Этот файл содержит класс API и находится в /manager/includes/document.parser.class.inc.php.
После строки (примерно 1077) :
$this->documentIdentifier= $this->getDocumentIdentifier($this->documentMethod);
надо внести код :
preg_match('/[0-9]*/', $this->documentIdentifier, $res);
asort($res);
if (intval($res[0])>0){
if (!preg_match('/\/[0-9]{1,}/', ($this->makeUrl($res[0], '', '', 'full')))){
header ('HTTP/1.1 301 Moved Permanently');
header("Location: ".($this->makeUrl($res[0], '', '', 'full')));
}
}
Этот код будет производить перенаправление с цифровых адресов на адреса-псевдонимы, если они есть.
Самая популярная ошибка:
При использовании ЧПУ часто забывают создать псевдоним для главной страницы сайта. Таким образом, создаются дубли самой главной страницы. Как их избежать (закрыть в robots или сделать редирект) — необходимо решать индивидуально для каждого сайта, общего решения пожалуй что нет.
Также существует дублирование контента из-за добавления слешей в конец адреса. В Modx эту проблему можно решить, настроив особым образом .htaccess.
Если на сайте используются суффиксы для URL (по умолчанию .html), в .htaccess надо добавить строки:
RewriteRule ^(.*)\.html[/]+$ $1.html [L,R=301]
В коде .html надо заменить на тот суффикс, который используется на сайте.
Если суффикс для сайта пустой, то необходимо привести все урлы «site.ru/doc/» к типу «site.ru/doc». Это делается в .htaccess:
RewriteRule ^(.*)[/]+$ $1 [L,R=301]
Но, на мой взгляд, лучше установить суффикс «/» и привести все урлы «site.ru/doc» к типу «site.ru/doc/»:
RewriteRule ^.+[^/]$ http://www.site.ru%{REQUEST_URI}/ [L,R=301]
Для того, чтобы исключить дублирование карт сайта, т.е. поставить редирект с sitemap.xml.html на sitemap.xml в .htaccess, надо добавить строки:
RewriteRule ^(.*)\.xml\.html$ $1.xml [L,R=301]
Вместо site.ru нужно поставить доменное имя сайта.
42 Ответов на “Дублирование контента в MODx”
Оставить комментарий
Вы можете подписаться на RSS ленту комментариев.



февраля 5, 2010 at 14:52
А как насчёт слэша на конце адресов?
Как избежать дублирование страниц с адресами ‘site.ru/doc/’ и ‘site.ru/doc’
февраля 10, 2010 at 1:40
Дополнил статью. Спасибо за вопрос)
марта 1, 2010 at 3:26
Есть ещё неплохой скрипт для автоматического редиректа. Редиректит на выбранный алис и с адресов со слэшами и страницы типа index.php?id=… и пр.
http://modxcms.com/extras/package/395
мая 10, 2010 at 14:59
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.xml\.html$ $1.xml [L,R=301]
Не работает этот метод с SEO Strict плагином.
мая 24, 2010 at 16:05
При вставки кода в document.parser.class.inc.php сайт пересает открываться. Пишет:
Parse error: syntax error, unexpected ‘[‘ in /home/users/d/dimap/domains/group-ra.ru/manager/includes/document.parser.class.inc.php on line 1085
Подскажите, что ему не нравится?
мая 31, 2010 at 23:33
Вероятнее всего вы скопировали строчки из поста, и если не поменять форматирование, то в нем будут неправильные кавычки.
http://www.mgordeev.ru/files/topress.php
правильный кусок кода. Только дескрипторы надо убрать)))
июня 2, 2010 at 9:54
Про псевдонимы для главной страницы спасибо!
А такой вопросик. Происходит дублирование контента Яндексом и гуглом в таких ситуациях:
http://www.mysite.ru
mysite.ru
Как от этого избавится.
Может вопрос и туповат, но на modx перешел 8 дней назад
июня 3, 2010 at 21:22
В .htaccess необходимо добавить строки:
RewriteCond %{HTTP_HOST} ^yousite\.ru
RewriteRule .* http://www.yousite.ru.%{REQUEST_URI} [L,R=301]
подставив вместо yousite адрес Вашего сайта.
июня 25, 2010 at 12:12
Strict URLs Вам в помощь.
на официальном сайте искать тут:
http://modxcms.com/extras/package/395
июня 25, 2010 at 12:14
Чуть не забыл — не забыть добавить Rewrite в .htaccess (по умолчанию закомментирован) — иначе при очистке кэша можно случайно «переехать» с http://www... на «без www» или наоборот. В общем, первый запрошенный документ и сформирует адрес сайта.
февраля 22, 2011 at 10:36
Использую MODx 1.0.5
Вставил код в document.parser.class.inc.php — все вроде ок, вот только теперь главная с псевдонимом отображается http://www.site.ru/index (хотя ссылка идет на http://www.site.ru)
Как его убрать не подскажете?
февраля 22, 2011 at 11:31
Попробуйте у главной страницы убрать псевдоним.
февраля 22, 2011 at 11:34
я юзаю плагин TransAlias и он автоматом ставит псевдоним, если поле пустое(
февраля 23, 2011 at 0:49
Да, тогда проблема. Ничего кроме костыля на ум не приходит.
строку
if (intval($res[0])>0){
заменить на
if ((intval($res[0])>0)&&(intval($res[0]!=$this->getConfig(‘site_start’)))){
марта 8, 2011 at 13:46
Огромное спасибо, подскажите как перенаправлять с http://www.site.ru на site.ru в стандартном modx .htaccess.
Нигде не могу найти, если ставить обычный 301 с включеными чпу, то ничего не получаеться.
марта 10, 2011 at 13:25
В .htaccess необходимо добавить строки:
RewriteCond %{HTTP_HOST} ^www\.yousite\.ru
RewriteRule .* http://yousite.ru%{REQUEST_URI} [L,R=301]
подставив вместо yousite адрес Вашего сайта.
мая 13, 2011 at 21:02
Приветствую.
А если используются вложенные урл, то не работает такое исправленьице, или я что-то не понимаю. Например , сайт/catalog/12/ и предположим сайт/catalog/tv/ — одна и таже страница. Это как нибудь можно исправить?
мая 23, 2011 at 15:47
поставил MODx Revolution 2.0.8-pl (advanced) подскажите как там правильно составить robots.txt
мая 24, 2011 at 10:31
такого файла document.parser.class.inc.php. в MODx Revolution 2.0.8-pl (advanced) нет, как там бороться с дублями, кстати еще sitemap тоже не создается по тому как тут описано, жду помощи
июня 24, 2011 at 21:50
Modx упрямо не хочет в ЧПУ-урлах проставлять точку. Возникла проблема с robots.txt и sitemap.xml В обоих случаях выдает что-то следующее sitemapxml.html и robotstxt.html Если в поле alias написать sitemap.xml и сохранить, то сохраняется как sitemapxml (без точки) Как в .htaccess исправить это?
С уважением,
июня 27, 2011 at 10:38
Может дело в специфичных настройках плагина TransAlias? Попробуйте его отключить.
июля 4, 2011 at 21:35
всем приве
ребят подскажите плиз есть сайт есть 1 страница http://www.mysite.ru/cars
а яндекс видит страницу http://www.mysite.ru/5 т.е. у яндекс не правильный урл. страница одна и таже но под разными урлами. причем проблема только с 1 страницей все остальное норм.
в админке прописан пункт «ссылка» cars
июля 4, 2011 at 21:55
так надо прописать псевдоним и теперь уже редирект ставить
июля 4, 2011 at 21:56
а не подскажите как это сделать?
очень прошу
июля 5, 2011 at 21:20
Псевдоним поставить в системе — тут наверное комментировать не нужно.
Если страница одна можно прописать в .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^5$ /cars$1 [L,R=301]
июля 13, 2011 at 0:24
не получается не как
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^5$ /cars$1 [L,R=301]
пишу так и не чего не получается не перенаправляет он.
надо с ссылки http://mysite.ru/5
оправлять на http://mysite.ru/cars
псевдоним в свойствах странице прописан.
и страница доступна одна и та же по обоим адресам,
июля 13, 2011 at 20:37
Проверял — должно работать.
Значит либо htaccess вообще не работает или не там пишите.
августа 10, 2011 at 17:19
Подскажите, пожалуйста, как сделать редирект со страниц http://site.ru/page.html на url со слэшем типа http://site.ru/page/?
октября 4, 2011 at 15:18
Добрый день.
RewriteCond %{HTTP_HOST} ^yousite\.ru
RewriteRule .* http://www.yousite.ru.%{REQUEST_URI} [L,R=301]
(скопировала у вас)
Установила. Теперь у меня адрес в строке выглядит так: http://www.site.ru./obuchenie
Как убрать точку после .ru
Пробовала удалить:
RewriteCond %{HTTP_HOST} ^yousite\.ru
RewriteRule .* http://www.yousite.ru.%{REQUEST_URI} [L,R=301]
Не помогает!
октября 4, 2011 at 15:39
RewriteCond %{HTTP_HOST} ^yousite\.ru
RewriteRule .* http://www.yousite.ru%{REQUEST_URI} [L,R=301]
так правильно. Сейчас в тексте тоже исправлю.
октября 4, 2011 at 15:40
Спасибо! Потом исправила, когда поняла. Но те, которые уже с точкой, они так теперь и открываются с точкой. Как их исправить?
октября 4, 2011 at 15:42
Дело в кеше или системы или браузера. Если все очистить — должно быть ок.
октября 4, 2011 at 17:10
Спасибо.
октября 4, 2011 at 22:17
Создав робот.тхт ПС не индексируют страницы которые создаются через пагинатор. http://site.ru/articles?start=5
Подскажите как быть?
И еще вопрос, актуален ли код добавляемый в htacess для новых версий evo? А то что то вешает сайт этот код.
октября 4, 2011 at 23:32
В robots.txt вместо Disallow: /*?
Написать
Disallow: /*?id=
Так правильнее будет. Странно, а в какой версии проблема. htaccess вряд ли должен убивать систему.
декабря 12, 2011 at 16:36
В .htaccess добавил строки для склейки дублей со слешом, но почему то в выдаче досих пор присутствуют дубли некоторых страниц, со «/» на конце и без! Что же делать? Само не приятное что главная в индексе ПС получилась тоже со слешом, а ссылки на нее я ставил без него! :\\ Так же и с некоторыми другими, хотя большинство проиндексированы как мне и надо, без «/», но не все. Как на это можно повлиять?
декабря 25, 2011 at 18:28
Добавил строки:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)\.xml\.html$ $1.xml [L,R=301]
но редирект с sitemap.xml.html на sitemap.xml не происходит.
Что еще можно придумать?
января 11, 2012 at 18:00
Товарищи, подскажите, а почему вообще возникает эта проблема?
Откуда поисковик узнает о неправильных ссылках если на сайте они все будут однотипные?
января 12, 2012 at 17:14
Добрый день!
Подскажите как можно убрать дублирование заголовка страницы (тег title) в самом текстовом наполнении страницы?
января 12, 2012 at 18:00
to Neil вообще может по пользовательскому фактору, например кто-то некорректную, но рабочую ссылку разместит. Такое часто бывает, когда ЧПУ начинают использовать не с самого создания сайта. Ну или какой-нибудь сниппет неправильно сработает.
января 12, 2012 at 18:04
to Сергей: В шаблоне видимо дублируется. Если в шаблоне все ок — значит используется старая система мета-тегов. В новых версиях MODx система по умолчанию отключена.
января 12, 2012 at 21:03
to mgordeev: Т.е. проблема касается далеко не всех? Может об этом тоже стоит в статье написать?
А где можно почитать, чем опасна такая ситуация (с дублированием контента)?