Internal SEO в Drupal 6 от А до Я

Главные вкладки

Аватар пользователя Shift-Web Shift-Web 2 января 2011 в 14:18

Internal SEO в Drupal 6 от А до Я

Внутренняя оптимизация Drupal

Введение в Drupal iSEO

Есть мнение, что друпал трудный и негибкий, имеет кучу недостатков и плохо индексируется, что делать на друпал маленькие сайты неразумно и затратно. Так ли это на самом деле и как избежать SEO граблей молодому сайту? Несомненно порог входа в индустрию играет определённую роль и будьте готовы к трудностям, тем не менее на Друпал можно всё! Достаточно немного свободного времени на изучение и желание учиться.
Для кого эта статья? Для тех, кто прошарен в iSEO, но мало знаком с Drupal, для интерсующихся и желающих улучшить SEO характеристики, для тех, кто озадачен бюджетом на продвижение и тех кто боится делать на Drupal.
Drupal в силу модульной архитектуры, являясь очень гибкой системой, имеет ряд проблем связанных с внутренней оптимизаций в контексте iSEO. Огромное количество модулей, вариантов реализации и разобщённость разработчиков одни из факторов, которые требуют уделения пристального внимания планированию информационной архитектуры ресурса и при расширении функциональности ядра. Многие модуль взаимодействуют не согласованно.
Даже при создании ресурса сравнительно простой структуры на базе Core модулей(из коробки) в зависимости от выбранного пути решения требуется анализ и пересмотр iSEO конфигурации с целью предотвращения возможных негативных эффектов на поисковые системы. Одними из основных проблемных мест архитектуры Drupal является динамическая система URL адресов, конфигурация robots.txt и в некоторой степени производительность.
Данный материал — попытка обозначить слабые места системы и предложить пути их решения.

Терминология

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

iSEO
abbr: Internal Search Engines Optimization
Внутренняя поисковая оптимизация, комплекс методов направленных на улучшение характеристик индексируемости и привлекательности ресурса в глазах поисковой системы без использования эффектов внешнего влияния и социально-медийного промо.
Десинхронизация
Явление, когда части общего связанного механизма или системы выбиваются из общего потока, работают в разнобой. В контексте iSEO десинхронизация чаще всего проявляется в расстановке ключевых слов, логической структуры URL.
Примером SEO десинхронизации могут служить неверно проставленные заголовки относительно контента или неверное их наполнение. Нелогичная URL структура вложенности страниц в каталоги.
Дубликаты, дубляж, дубли
Явление, когда один и тот же контент(процент одинакового контента велик) может быть отображён по разным URL-адресам. Приводит к штрафам со стороны поисковых систем, мешает продвижению целевых страниц.
Целевая страница
Страница с контентом, которая должна быть продвинута в выдаче, оптимизированная по определённым ключевым словам страница, являющаяся точкой входа.
Точка входа
Страница с оптимизированным релевантным определённому запросу пользователя поисковой системы контентом. Является приоритетным местом, куда попадает пользователь с поисковика.
Штрафы, штрафные санкции
Меры наказания со стороны поисковых систем за неверный подход к оптимизации либо его отсутствие. Чаще всего выражаются в понижении позиций штрафуемого ресурса в поисковой выдаче.
Вес страницы, статический вес
Абстрактное значение характеризующее совокупность таких факторов, как плотность ключевых слов и их значимость, количество релевантных ссылок с ресурса ведущих на страницу. Чем больше вес, тем выше шанс попасть в топ.
Для поисковой системы гугл вес выражается термином PageRank.
Для поисковой системы Yandex вес — синоним тематическому Индексу Цитирования.
Структура URL
Логическая вложенность страницы в виртуальную систему каталогов. Например, Сайт -> Раздел -> Подраздел -> Страница. Нелогично, когда контент страницы отображается на выходах из разных каталогов.

Ядро, модули ядра и настройка ↑ ↑ ↑

Рассмотрим минимальный набор модулей необходимых для создания сайта и сконфигурируем их в зависимости от задачи. Для примера возьмём реализацию простого информационного сайта.

Модули, проблемы и дополнения

Для дальнейшего понимания фронта работ по оптимизации ознакомимся со списком модулей, их проблемными местами. Также в списке присутствуют описания модулей устраняющих некоторые проблемы и улучшающих семантичность.
Все описанные методы настройки и допиливания подходят для версии Drupal 6.20, актуальной на момент написания. Перед вмешательством в исходные коды необходимо обязательно делать бэкап и по завершению этапа проводить тестирование всех взаимосвязанных модулей.

Node -> Ядро
Нода, универсальный узел являющийся контейнером хранения минимальной единицы информации. Каждому типу информации могут быть определены отдельные типы узла. Некоторые категории узлов создаются пользователем, некоторые программно модулями и ядром.
По умолчанию корневая директория /node и не дружественный пользователю цифровой идентификатор (например /node/386) лишают логики и наглядной уникальности адреса материала.
Taxonomy -> Ядро
Таксономия, основной инструмент структурирования информации(нод) по принципу раздел-термин.
По умолчанию неуклюжие конструкции адресов вида taxonomy/termin/ и дубликация контента при использовании дополнительных модулей работающих с ядерными(Core) URL путями, подстановка лишнего аргумента сортировки при построении адреса некоторыми модулями приводит к десинхронизации. Дублирование и путаница с виртуальными адресами RSS каналов.
Book -> Ядро
Книга, дополнительный инструмент структурирования информации с возможность создавать навигабельные подшивки и коллекции.
Корень проблемы в Node и Taxonomy
Blog -> Ядро
Подключает функциональность блога и задаёт дополнительный одноименный тип узла.
Дублирование контента при неправильном построении сайта, создание рассеивающих статический вес ссылок.
Comments -> Ядро
Подключает функционал комментирования к любому типу ноды.
Создание массы ссылок неудобных для пользователя, рассеивающих вес. Дополнительные пути к малоинформативным(бесполезным для ПС) страницам, вызывающие эффекты штрафов со стороны S.E.
Archives -> Дополнительный
Позволяет структурировать информацию и реализует навигацию по критерию даты её создания.
Очевидное дублирование информации вызывает штрафные санкции. Создание уникальных, но тем не менее нелогичных путей при навигации по датам. Отсутствие head-линковки(
).
Настройка элементарна. Просто отметьте типы нод, которые должны отображаться.
По желанию вы можете найти в коде модуля участок отвечающий за отрисовку заголовков даты и переверстать его чем другим, например тегом .
Sitemap -> Дополнительный
Создаёт страницу с навигацией по разделам на базе таксономии.
Десинхронизация путей таксономии и RSS каналов, отсутствие интеграции системы URL с некоторыми модулями. Дубликаты контента.
Настроим уникальное сообщение карты сайта, оно поможет разбавить ссылочную массу релевантным описанием. Отключим показ, главной страницы, авторов блогов и RSS каналов, остальные опции по задаче в зависимости от потребностей.
Найдём файл site_map.module в папке модуля, отыщем строку:
 // Display the $term.
    $output .= "\n<li>";
    $term_item = '';
    if ($forum_link) {
      $term_item .= l($term->name, 'forum/'. $term->tid,
      array('attributes' => array('title' => $term->description)));
    }
    elseif ($term->count) {
      $term_item .= l($term->name, ($cat_depth < 0) ? taxonomy_term_path($term) :
      "taxonomy/term/$term->tid/$cat_depth",
       array('attributes' => array('title' => $term->description)));
    }
    else {
      $term_item .= check_plain($term->name);
    }
    if (variable_get('site_map_show_count', 1)) {
      $term_item .= " ($term->count)";
    }
 

Заменим её на:

    // Display the $term.
    $output .= "\n<li>";
    $term_item = '';
    if ($forum_link) {
      $term_item .= l($term->name, 'forum/'. $term->tid,
      array('attributes' => array('title' => $term->description)));
    }
    elseif ($term->count) {
      $term_item .= l($term->name, ($cat_depth < 0) ? taxonomy_term_path($term) :
      "taxonomy/term/$term->tid",
      array('attributes' => array('title' => $term->description)));
    }
    else {
      $term_item .= check_plain($term->name);
    }
    if (variable_get('site_map_show_count', 1)) {
      $term_item .= " ($term->count)";
    }

 

Этот хак устранит лишний концевой аргумент all в адресе термина и десинхронизацию с адресами карты сайта, которую строит модуль XML Sitemap. Таким образом индексироваться будет то, что нужно.

XML Sitemap -> Дополнительный
Строит машиночитаемый файл карты сайта, содержащий все материалы ресурса, категории, штампы времени и контролы переиндексации.
Десинхронизация системы URL с некоторыми модулями. Дубликаты, потеря концентрации веса.
Модуль составной, но нам понадобится только несколько компонентов. Включаем XML Sitemap, XML Sitemap Node, XML Sitemap Taxonomy, остальные компоненты можно смело удалить.
В настройках модуля установим значением Default base URL: главное зеркало сайта. Last modification date format: — полный. Приоритет главной страницы — 1, частота обновления daily(раз в сутки). Для таксономии включим термины, которые должны присутствовать в карте.
Отдельные опции кастомизаруются непосредственно в настройках словарей и терминов таксономии. Опции excluded\included — включено в карту \ исключено из карты. Приоритет разумно выставлять в пределах 0.4-0.7.
Page Title -> Дополнительный
Позволяет автоматизировать создание уникальных, структурозависимых заголовков страниц ядра и контента используя API функциональность модуля Token путём подстановки значений из шаблона.
Улучшает привлекательность контента, наглядную структурность, повышает iSEO характеристики.
Модуль помогает кастомизировать заголовки() страниц в зависимости от их адреса или типа.<br /> Настройка достаточно простая. Смотрим какой странице характерен заголовок, подбираем значения из списка доступных Token и подставляем после стандартного заголовка страницы через разделитель « | ».
Nodewords -> Дополнительный
Добавляет семантические уникальные мета-описания страницам генерируемым яром и пользователями.
Повышает привлекательность ресурса и SEO характеристики.
Модуль составной. Минимальный набор компонентов: Nodewords, Administration interface for Nodewords, Basic meta tags, Meta tags for custom pages, User interface for Nodewords. Включаем эти компоненты, а остальные удаляем из папки модуля.
Общие настройки: канонический URL и описание(по желанию ключевые слова), остальное выключаем. Отмечаем опции показа формах только для описания и ключевых слов. Базовый URL устанавливаем равный адресу главного зеркала(с www или без www в зависимости от требований). Если таксономия уже содержит какое-то приличное число терминов, то можно отметить автоподстановку из них. Если нет, то сделать это можно будет позже — так мы избежим возможных санкций за перенакачку ресурса ключевиками.
Настройки, специфичные отдельным страницам: здесь нужно указать адреса страниц, для которых буду генерироваться особые мета теги, настроить поля.
Важно следить чтобы все мета описания были уникальными и не повторялись, они должны отражать краткую суть материала.
Path -> Дополнительный
Создаёт виртуальные синонимы для стандартных /node.
ЧПУ, уникальность, структурность, ключи в адресе.
Модуль не требует детальной настройки, при добавлении материала в опциях создания появится возможность назначить синоним адреса.
Pathauto -> Дополнительный
Автоматизирует создание более привлекательных синонимов адресов для контента.
Избыточная шаблонность, десинхронизация URL пространства.
ЧПУ, уникальность, структурность.
Global Redirect -> Дополнительный
Устраняет проблемы создания ядром адресов с слэшем на конце и без, перенаправляя все запросы на один адрес. Проверяет регистр запрашиваемого содержимого и перенаправляет на правильный адрес. Сверяет права доступа к содержимому и при необходимости отправляет на страницу авторизации.
ЧПУ, уникальность, структурность, ключи в адресе.
Настройки: удаление слэша — включено, убрать конечный нулевой аргумент — включено, проверка доступа — включено, проверка — регистра включено.
Associated Nodes
Добавляет релевантные ссылки к материалам на основе словарей таксономии.
В настройках модуля добавть блок для каждого словаря, настроить заголовок и критерии отбора. Для избежания дублирования установить условия отключения показа.

Список показывает, что основная проблема — это создание целой кучи нелогичных и неуникальных адресов, которые зачастую дублируют содержимое сайта. Создаются проблемы продвижения: вес страниц вместо концентрации на объекте продвижения рассеивается, под фильтры попадают более привлекательные целевые страницы, выдача захламляется. Корень структурной базы сайта, таксономия, по умолчанию создаёт грубые адреса и каждый модуль формирует связки по своему.
Рассмотрим пример: модули XML Sitemap и Sitemap создают карты сайта и включают одни и те же материалы сайта, но по разным путям. Сканирующий робот поисковой системы обошёл оба адреса и нашёл одинаковый контент. Велик шанс, что продвигаемая более привлекательная страница окажется под фильтром и не попадёт в выдачу. Пользователь будет попадать туда, куда не надо и возможна вероятность появления внешней ссылки на нежелательный адрес, что укрепит его позиции.
Не менее значительная проблема — это отсутствие в заводской поставке функционала для мета-описаний. Снижается привлекательность ресурса в глазах поисковой системы и для пользователя, ведь основная цель оптимизации — поднять позиции сайта в выдаче по релевантному запросу и пользователь врядли кликнет по малоинформативному сниппету.
Некоторая часть проблем решается простой настройкой ядра и модулей, другая потребует правки кода. Поскольку хакать ядро является плохим тоном, но решение проблемы само собой не появится, плюнем на этикет Drupal Way. Вторым аргументом в пользу хаков и фиксов представлю фактор устаревания версии 6 и близкую дату релиза 7, что фактически означает прекращение поддержки и сосредоточение всех сил на новой системе. С ней еще будут отдельные проблемы, но это в будущем. На данный момент переход на сырец не целесообразен.

Хаки и исправления ↑ ↑ ↑

Robots.txt

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

Оригинальный Robots.txt для Drupal 6
# $Id: robots.txt,v 1.9.2.2 2010/09/06 10:37:16 goba Exp $
#
# robots.txt
#
# This file is to prevent the crawling and indexing of certain parts
# of your site by web crawlers and spiders run by sites like Yahoo!
# and Google. By telling these "robots" where not to go on your site,
# you save bandwidth and server resources.
#
# This file will be ignored unless it is at the root of your host:
# Used:    http://example.com/robots.txt
# Ignored: http://example.com/site/robots.txt
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/wc/robots.html
#
# For syntax checking, see:
# http://www.sxw.org.uk/computing/robots/check.html

User-agent: *
Crawl-delay: 10
# Directories
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /themes/
# Files
Disallow: /CHANGELOG.txt
Disallow: /cron.php
Disallow: /INSTALL.mysql.txt
Disallow: /INSTALL.pgsql.txt
Disallow: /install.php
Disallow: /INSTALL.txt
Disallow: /LICENSE.txt
Disallow: /MAINTAINERS.txt
Disallow: /update.php
Disallow: /UPGRADE.txt
Disallow: /xmlrpc.php
# Paths (clean URLs)
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /contact/
Disallow: /logout/
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
# Paths (no clean URLs)
Disallow: /?q=admin/
Disallow: /?q=comment/reply/
Disallow: /?q=contact/
Disallow: /?q=logout/
Disallow: /?q=node/add/
Disallow: /?q=search/
Disallow: /?q=user/password/
Disallow: /?q=user/register/
Disallow: /?q=user/login/

Улучшенный robots.txt для Drupal 6
User-agent: *
Crawl-delay: 4
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /themes/
Disallow: /comment/reply
Disallow: /comment
Disallow: /contact
Disallow: /search
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
Disallow: /search/
Disallow: /search/google*
Disallow: /search/node*
Disallow: /search/user*
Disallow: /filter
Disallow: /node$
Disallow: /archive/all$
Disallow: /archive/all/2011$
Disallow: /*?sort*
Disallow: /*&sort*
Disallow: /tracker?
Sitemap: http://www.domain.ru/sitemap.xml
host: www.domain.ru
Хардкорный robots.txt : убивает львиную долю шлака
User-agent: *
Crawl-delay: 4
Disallow: /archive/all/2011$
Disallow: /archive/all$
Disallow: /*comment*
Disallow: /includes
Disallow: /profiles
Disallow: /modules
Disallow: /contact
Disallow: /scripts
Disallow: /themes
Disallow: /search
Disallow: /filter
Disallow: /*atom*
Disallow: /*sort*
Disallow: /*utm_*
Disallow: /misc*
Disallow: /user*
Disallow: /node$
Disallow: /*?*
Sitemap: http://www.domain.ru/sitemap.xml
host: www.domain.ru

Осторожно(!) Следите за вашими URL синонимами, некоторые совпадения могут убить индексацию отдельных страниц.

Есть пару замечаний. Клиентам шустрых хостингов и своих серверов Crawl-delay можно устанавливать в районе 1-4, это ускорит сбор информации поисковиками. Если хостинг медленный или информации очень много, то планку стоит повышать — это обеспечит баланс между индексируемостью и генерацией нагрузки.
Модуль Archives зачастую дублирует информацию главной страницы, для избежания санкций перекроем страницу со всеми материалами и материалами за текущий год.
Модифицированный robots.txt не содержит запретов для файлов лицензий, readme и changelog, рекомендуется вообще удалить их после ознакомления из всех директорий движка т.к. их информационная ценность на production стремится к нулю.
Также стоит провести анализ и очистить файл от лишних запретов тех путей, по которым неавторизованному пользователю отдаётся головок 403(доступ запрещён). Например, админка и добавление материала.

Исправление кривых URL RSS таксономии↑ ↑ ↑

В папке модуля taxonomy найти в файле taxonomy.pages.inc.

строку

drupal_add_feed(url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'), 'RSS - '. $title)

заменить на

drupal_add_feed(url('taxonomy/term/'. $str_tids .'/feed'), 'RSS - '. $title);

строку

$channel['link'] = url('taxonomy/term/'. $str_tids .'/'. $depth, array('absolute' => TRUE));

заменить на

$channel['link'] = url('taxonomy/term/'. $str_tids, array('absolute' => TRUE));

В корневом файле .htaccess

<IfModule mod_rewrite.c>

</IfModule>

Сразу перед директивой RewriteBase /

  RewriteRule ^taxonomy/term/(.+)/feed taxonomy/term/$1/0/feed [NC]

Устранит нулевой аргумент и лишний уровень вложения RSS канала словаря таксономии.

Редирект на главное зеркало и тюнинг корневого .htaccess в Drupal↑ ↑ ↑

С помощью .htaccess пропишем правила для перенаправления дополнительного зеркала на главное.
В оригинальном файле .htaccess в корне сайта найдём секцию добавим правила после директивы RewriteEngine.

Редирект 301 .htacess на www
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /

  RewriteCond %{HTTP_HOST} ^domain\.ru$ [NC]
  RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  RewriteRule ^.htaccess$ - [F]
</IfModule>

Такой код секции должен получиться в итоге. Как показывает практика, предложенная опция редиректа не работает на некоторых хостингах, это связано с настройками платформы сервера.
Не забываем синхронизировать редирект с директивами Host и Sitemap в файле Robots.txt.

Анализ и доработка системы шаблонизации ↑ ↑ ↑

Что это даёт?

Комплекс мероприятий позволит улучшить разнесение ключей по front-end коду страниц, исключить нежелательные вхождения, очистить от мусорных элементов навигации, ускорить рендеринг страниц.
Что нужно понимать выполняя оптимизацию вёрстки и блочной архитектуры Drupal? Нужно тщательно анализировать контент, структуру разделов и отталкиваясь от этого перестраивать шаблоны. Целесообразна в первую очередь оптимизация всех заголовков и кода, который их генерирует.

Статичность как аргумент пользы

Стоит помнить, что все опции и участки вёрстки, которые не требуют частого изменения лучше выносить в виде чистого статичного HTML, например, постоянное меню навигации. Тоже самое касается установки кучи модулей, обеспечивающих маломальский функционал front-end. Почти все их можно и даже нужно стараться пересадить на статику. Это не только упростит работу с админкой, но позволит с лёгкостью кастомизировать и вносить правки. Вторым аргументом пользу отказа от модулей является скорость работы ядра. Чем меньше движку придётся обращаться к базе данных, тем быстрее пользователь увидит контент, тем мягче будут происходить перестройки кэша.

Заголовки

Поговорим о заголовках. Это те самые маркеры, которые позволяют визуально и по смыслу обозначить характер секции. Поскольку заголовки играют достаточно ощутимую роль при выделении релевантного запросу пользователя контента, имеет смысл озадачиться их оптимизацией.
Тезисы:

  • Заголовки должны иметь иерархическую структуру вложенности.
  • Имеют смысл только заголовки

    -

    . Они самые важные и только ими имеет смысл размечать контент.

  • Заголовки

    -

    не дают ощутимого эффекта усиления ключевика и могут быть использованы для обозначения служебных участков шаблона.
  • Чем больше на странице заголовков, тем сильнее рассеивается их значимость. Если требуется подчеркнуть важность ключа, не стоит использовать много заголовков.
  • Заголовки не должны быть отделены от характерного им контента крупными конструкциями разметки. Это препятствует выделению релевантного контента.

Заголовки h1 - h3 используем для разметки контента. Остальные(h4 - h6) по желанию можем использовать для разметки блоков, навигации, участков взаимодействия с пользователем. Если блоков слишком много и есть угроза понизить значимость ключевиков контента, заголовки блоков рекомендуется переверстать другими тегами.
Множество факторов будет зависеть от выбранной темы оформления и тематики ресурса, если Вы проектируете тему для Drupal с нуля или адаптируете готовый layout, то мини-мануал поможет сделать грамотную семантическую вёрстку.

Шаблон - > page.tpl.php
Основной шаблон каркаса сайта, является обёрткой для всех генерируемых движком страниц и блоков. В этом шаблоне заложен потенциал предварительной разметки и прописаны вызовы других функций.
Переместим выше. <div class="geshifilter"> <div class="drupal6 geshifilter-drupal6" style="font-family:monospace;">  <head><br />   <title><span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$head_title</span>; <span style="color: #000000; font-weight: bold;">?></span></title><br />   <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$head</span>; <span style="color: #000000; font-weight: bold;">?></span><br />   <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$styles</span>; <span style="color: #000000; font-weight: bold;">?></span><br />   <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$scripts</span>; <span style="color: #000000; font-weight: bold;">?></span><br />   </head><br />   </div> </div> <p> Если ваш сайт не брендовый и нет хорошей известности названия, то не стоит делать логотип тегом<br /> </p><h1>. Ведь врядли Вас будут искать по названию сайта. Отдадим приоритет заголовкам контента(пользы будет больше), а логотип обверстаем картинкой или другими тегами.<br /> Участок разметки контента при правильном построении должен иметь примерно следующий вид. Он будет повторяться число раз, равное числу материалов установленных в админке. <div class="geshifilter"> <div class="drupal6 geshifilter-drupal6" style="font-family:monospace;">      <div class="content"><br />          <span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$title</span><span style="color: #66cc66;">)</span>: <span style="color: #000000; font-weight: bold;">?></span><br />              <h1> <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$title</span>; <span style="color: #000000; font-weight: bold;">?></span> </h1><br />              <span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">(</span><span style="color: #0000ff;">$tabs</span><span style="color: #66cc66;">)</span>: <span style="color: #000000; font-weight: bold;">?></span><br />               <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #ff0000;">'<div id="tab-control">'</span>.<span style="color: #0000ff;">$tabs</span>.<span style="color: #ff0000;">'</div>'</span>;<span style="color: #000000; font-weight: bold;">?></span><br />             <span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">endif</span>;<span style="color: #000000; font-weight: bold;">?></span><br />          <span style="color: #000000; font-weight: bold;"><?php</span> <span style="color: #b1b100;">endif</span>; <span style="color: #000000; font-weight: bold;">?></span><br />          <span style="color: #000000; font-weight: bold;"><?php</span> <a href="http://www.php.net/print"><span style="color: #000066;">print</span></a> <span style="color: #0000ff;">$content</span>; <span style="color: #000000; font-weight: bold;">?></span><br />      </div><br />   </div> </div> </h1><p> Такой код сделает все заголовки на всех уровнях страниц обёрнутыми в<br /> </p><h1>, что немаловажно. Обратите внимание на то, что вызов вкладок обёрнут в условие заголовка, это логично т.к. они обычно показываются только авторизованному пользователю и не бывают там, где заголовка нет.<br /> В template.php файла темы добавим код, который уберёт лишнюю <meta /> кодировки и убрать объявление в шаблоне(останется только одна мета, идущая сразу после т.к. образом будет соблюдено требование безопасности и уменьшится кол-во мусорного кода). <div class="geshifilter"> <div class="drupal6 geshifilter-drupal6" style="font-family:monospace;">  <span style="color: #808080; font-style: italic;">/* KILL THE SECOND META CHARSET DEFINITION IN HEAD SECTION */</span> <p>    <span style="color: #000000; font-weight: bold;">function</span> phptemplate_preprocess_page<span style="color: #66cc66;">(</span><span style="color: #66cc66;">&</span><span style="color: #0000ff;">$vars</span><span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span><br />       <span style="color: #0000ff;">$vars</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'head'</span><span style="color: #66cc66;">]</span> = <a href="http://www.php.net/preg_replace"><span style="color: #000066;">preg_replace</span></a><span style="color: #66cc66;">(</span><span style="color: #ff0000;">'<br />         /<meta http-equiv=<span style="color: #000099; font-weight: bold;">\"</span>Content-Type<span style="color: #000099; font-weight: bold;">\"</span>[^>]*>/'</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$vars</span><span style="color: #66cc66;">[</span><span style="color: #ff0000;">'head'</span><span style="color: #66cc66;">]</span><br />       <span style="color: #66cc66;">)</span>;<br />     <span style="color: #66cc66;">}</span><br />   </p></div> </div> </h1><p> Все остальные переменные доступные для шаблона page.tpl.php вы можете применять на своё усмотрение.<br /> </p>
Шаблон - > node.tpl.php
Основная обёртка контента страницы. Содержимое этого шаблона подгружается в шаблон page.tpl.php в регион $content, оно не повторяется.
Всё содержимое шаблона можно разделить на 3 участка(заголовок, метаданные, дополнительные ссылки).
В условие $page == 0 обёрнут заголовок, это предотвращает рендеринг заголовков одинакового уровня для страниц разной вложенности относительно корня ресурса. Заголовок дополнительно обвёрстан ссылкой ведущей на материал.
  <?php if ($page == 0):?>
    <?php print '<h2>
    <a title="'
.$title.' смотреть полностью" href="'.$node_url.'">'.$title.'</a>
    </h2>'
; ?>
    <div class="meta-data">
      <?php print $name; ?>
      <?php print $date; ?>
    </div>
  <?php endif; ?>
 

Переменная $content в дурпал встречает в разных шаблонах, но почти всегда содержит основную информацию. В шаблоне node.tpl.php в это переменной содержится контент материала(новости, заметки блога, темы форума, страницы).

<?php print $content; ?>
 

Переменная $links отвечает за вывод ссылок материала, комментариев к нему и маркера принадлежности к типу ноды. Рекомендую закрыть его от индексации с помощью пары <--noindex-->.

<?php if ($links): print '<!--noindex-->
  <div class="linker">'
.$links.'</div>
  <!--/noindex-->'
; ?>
<?php endif; ?>
 

Дополнительно в шаблоне node.tpl.php доступны такие переменные, как $taxonomy, $picture, $teaser, $submited. Полезным для SEO является только $taxonomy и то далеко не всегда.
Обратите внимание, что на стиль кодинга. Помешать в один print конструкцию целиком не совсем удобно при разработке, зато итоговый front-end выхлоп будет опрятнее и компактнее.

Шаблон - > comment.tpl.php
Отвечает за вывод комментариев
Перекрываем переменную $links вместе в обёрткой.
<?php print'<a id="comment_'.$id.'"></a>'; ?>
<div class="comment<?php print ($comment->new) ? ' comment-new' : '';
                print ' '. $status ?> clear-block">

  <div class="meta-data">
    <?php if ($comment->new): ?>
      <span class="new"><?php print $new ?></span>
      <?php endif; print $submitted ?>
  </div>

  <div class="content">
    <?php print $picture; ?>
  <div class="remark">
    <?php print $content; ?>
  </div>
  </div>

  <?php print '<!--noindex-->
    <div class="linker">'
.$links.'</div>
  <!--/noindex-->'
; ?>
</div>

Небольшой хак для template.php убирает из тизера материала ссылку на добавление комментария
 /* KILL ADD COMMENT LINK */

function phptemplate_links($links) {
  if (count($links)>0){
    if (isset($links[node_read_more]) && isset($links[comment_add])){
    unset($links[comment_add]);
    }
  }
  return theme_links($links);
}
 

Шаблон - > block.tpl.php
Шаблон является обёрткой для контента отображаемого в блоках.
Самый простой пример шаблона будет содержать контент и заголовок.
<div class="block">
  <?php if (!empty($block->subject)): ?>
    <h5><?php print $block->subject ?></h5>
  <?php endif;?>
  <?php print $block->content ?>
</div>

Обратите внимание на тег

. Если вы проанализировали содержимое блока и хорошо подобрали ключевики для заголовка, можно смело использовать заголовки вплоть до

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

Шаблон - > box.tpl.php
Обёртка форм взаимодействия с пользователем. Содержимое шаблоны выводится ниже переменной $content в шаблоне page.tpl.php.
Содержимое шаблона, как правило, вообще не содержит ничего полезного в плане SEO. Закрываем от индексации, заголовок обвёрстываем самым нижним уровнем.
 <!--noindex-->
<div class="box-container">
  <?php if ($title): print '<h6>'.$title.'</h6>'; endif; ?>
  <?php print $content; ?>
</div>
<!--/noindex-->
 

Отталкиваясь от выше описанной логики вы можете оптимизировать и остальные шаблоны модулей. Анализируйте их содержимое и делайте выводы.

Итоги ↑ ↑ ↑

Выполнив рефакторинг и доработку сайт приобретёт правильную информационную архитектуру, повысится статический вес целевых страниц и улучшится ранжирование результатов поиска.
Значительно снизятся затраты на продвижение и исключится большинство возможных негативных манипуляций со стороны конкурентов с целью выбить сайт.

От Автора:

Данный обзор является лишь базовым и не учитывает все мыслимые варианты проектирования. Каждый выбирает свою конфигурацию и представление, статья указывает слабые места системы и даёт общий принцип решения проблем.

к оглавлению ↑ ↑ ↑

==============================
Вопросы и предложения принимаются. Нужно ли продолжать тему?

==============================
Отдельная благодарность Толе aka Ламер aka trademarketing.ru за помощь в дегустации читабельности.

Комментарии

Аватар пользователя artruslan artruslan 2 января 2011 в 15:10

Редирект в htaccess почему-то не пашет. Не одну неделю уже с ним вожусь. Думал этот мануал, поможет. Все равно не перекидывает. "Без www" работает, а "с www" не перекидывает на "без www". Домен третьего уровня.

Конечно продолжайте тему в этом направлении!

Но кое какие ответы на свои вопросы нашел.

Аватар пользователя Shift-Web Shift-Web 2 января 2011 в 15:16

"artruslan" wrote:
Но кое какие ответы на свои вопросы нашел.

Время ... Тему можно рассосать и разжевать на плотную книженцию, в одну статью уложить всё нереально.

Аватар пользователя Shift-Web Shift-Web 2 января 2011 в 15:25

По поводу редиректа могу подсыпать ещё вариантов.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Либо с помощью CNAME. У Вас не 1GB случаем?

Аватар пользователя tolykot tolykot 2 января 2011 в 15:33

Спасибо большое! На моем сайте у всех блоков title обернуты h2-это большая ошибка для данного сайта?

Модуль "Archives" выключил вообще!

Еще раз спасибо за статью, с нетерпением жду продолжение!

Аватар пользователя Shift-Web Shift-Web 2 января 2011 в 15:36

"tolykot" wrote:
Спасибо большое! На моем сайте у всех блоков title обернуты h2-это большая ошибка для данного сайта?

Ну как бы да ...

"tolykot" wrote:
Модуль "Archives" выключил вообще!

Нормальный модуль, только чуть напильником помахать ))) Адекватных альтернатив нет ему

Аватар пользователя artruslan artruslan 2 января 2011 в 15:36

Нет. Я на патруле.
Только у них почему-то моя конструкция не срабатывает. У другого хостера, она с друпалом работает, а в патруле — ни в какую не хочет. Что уже только не делал.

И так пробовал

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domen-sait.org\.ru$ [NC]
RewriteRule ^(.*)$ http://domen-sait.org.ru/$1 [L,R=301]

И так

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domen-sait\.org\.ru$ [NC]
RewriteRule ^(.*)$ http://domen-sait.org.ru/$1 [L,R=301]

Реакции ноль.

Аватар пользователя tolykot tolykot 2 января 2011 в 15:40

"Shift-Web" wrote:
Нормальный модуль, только чуть напильником помахать ))) Адекватных альтернатив нет ему

Я не спорю, модуль нормальный. Думаю моим посетителям этот функционал нах не нужен.

Аватар пользователя Shift-Web Shift-Web 2 января 2011 в 15:45

"artruslan" wrote:
Нет. Я на патруле.

Поговорите с поддержкой патруля, уверен они Вам помогут.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domen-sait.org\.ru$ [NC]
RewriteRule ^(.*)$ http://domen-sait.org.ru/$1 [L,R=301]

Похоже нужно экранировать точку.

"tolykot" wrote:
Я не спорю, модуль нормальный. Думаю моим посетителям этот функционал нах не нужен.

Ну тогда да )

Аватар пользователя vitok vitok 3 января 2011 в 13:23

Благодарю, интересная информация.
Сам я в SEO новичок, но насколько я понял, основное это заголовок и backlinks, а остальное 10-20% результативности. т.е. "не оптимизированный" сайт с большим количеством backlink-ов в поисковике будет выше чем оптимизированный но с малым кол-вом backlink-ов. Поправьте если не прав.

Аватар пользователя Shift-Web Shift-Web 3 января 2011 в 14:43

Не самая вкусная. В общем отвечу так....

СЕО -- это такая мутная тема в которую лезут все кому не лень, но чтобы реально что-то понять вам потребуется, как минимум html, css, php, серверы, понимание того как вся эта хрень даёт на выхлоп на front-end и что такое краулер. Далее нужно понимать концепцию в целом и долго экспериментировать, чтобы всё это дело утряслось по в правильном порядке.

То что об этом дофига пишут и продают это дело(как услугу) еще в принципе ничего не значит. Есть дофига подводных камней и интересных моментов. Так вот ... Ссылки, покупка ссылок, торговля ссылками, донор и акцептор, тематичность релевантность -- это все те вещи, до которых вам скорее всего придётся ползти своими силами, даже с учетом того, что об этом пишут.

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

Самое вкусное -- это понимать когда купить(наспамить, в тему прокоментить со сссылкой), где купить и знать какой эффект будет от этого вам. И здесь, естесственно без понимания внутрянки вы будете ввалить свои кровно заработанные, а эффекта не последует.

По сути, думаю понятно по чему. Всё начинается с концентрации на ресурсе и его характеристик, и тут не важно ваш он или чужой. Нужно просто знать и понимать чего ожидать. Ссылка -- это мостик и по нему кое что течёт -- не более.

Из личного опыта могу посоветовать быть избирательным в плане того, что вы хаваете и кто вас кормит.

Собсно, сабж.

Аватар пользователя Valeratal Valeratal 3 января 2011 в 17:07

по поводу h2 в тизерах и h1 в полных нодах

многие темы косячат - и в тизерах тоже идет h1

У меня сделано так

<?php if ($page == 0): ?>
<h2 class="teaser-title"><a href="<?php print $node_url ?>" title="<?php print $title ?>">
<?php print $title ?></a></h2>
<?php endif; ?>

для H1 полной ноды ничего не дописываю - и так работает

Аватар пользователя Sentrashy@drupal.org Sentrashy@drupal.org 17 января 2011 в 11:26

"Shift-Web" wrote:
Редирект 301 .htacess на www

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^domain\.ru$ [NC]
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
RewriteRule ^.htaccess$ - [F]

Подскажите, это редирект в случае когда главным является адрес с www?
Чтобы переделать его под себя надо поменять только www.domain.ru выделенное жирным, или что-то еще?

Аватар пользователя Shift-Web Shift-Web 17 января 2011 в 11:53

"<a href="mailto:Sentrashy@drupal.org">Sentrashy@drupal.org</a>" wrote:
Редирект 301 .htacess на www

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /
 
  RewriteCond %{HTTP_HOST} ^domain\.ru$ [NC]
  RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
  RewriteRule ^.htaccess$ - [F]
</IfModule>

Это он и есть

Откуда:
RewriteCond %{HTTP_HOST} ^domain\.ru$ [NC]

Куда:
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]

Аватар пользователя ErmaK88 ErmaK88 21 января 2011 в 6:18

слушай, это же супер..
а для 7 версии ты уже пишешь дааа ?:)))))))
особенно интересен КОД и изменине его.. я вот щас на 7 полез и похоже уже все по другому тут
title="Вход в аккаунт">Привет strong>admin!

h2 class="element-invisible">Административная панель инструментов

ну смотри какие пакости.. как убрать ума не приложу
если кому интересно взлянуть, вот http://napisanie-statey.ru/
начал делать, в код взглянул и ужаснулся,как поправить ума не приложу

Аватар пользователя Shift-Web Shift-Web 21 января 2011 в 6:45

"ErmaK88" wrote:
а для 7 версии ты уже пишешь дааа ?:)))))))

Нет и не собираюсь в ближайшие пол года Wink Мне хватает тёплой ламповой 6 и хватит ещё очень на долго ))))

Аватар пользователя Oldwin Oldwin 11 февраля 2011 в 14:25

"Shift-Web" wrote:
Небольшой хак для template.php убирает из тизера материала ссылку на добавление комментария

 /* KILL ADD COMMENT LINK */
 
function phptemplate_links($links) {
...


При такой реализации затираются атрибуты на значение по умалчанию (links).
<?php print theme('links', $primary_links, array('class' => 'другой_класс_для_ссылок')) ?>
Правильно, наверно, так писать:

/**
* Убирает из тизера материала ссылку на добавление комментария
*/

function phptemplate_links($links, $attributes = array('class' => 'links')) {
  if (count($links)>0){
    if (isset($links['node_read_more']) && isset($links['comment_add'])){
    unset($links['comment_add']);
    }
  }
  return theme_links($links, $attributes);
}

Поправьте, если я чего упустил.

upd. Поправил

Аватар пользователя _Igor_ _Igor_ 21 февраля 2011 в 8:40

"Shift-Web" wrote:
Улучшенный Robots.txt для Drupal 6
....

В книге «Drupal 6 Search Engine Optimization» автор, Ben Finklea, советует делать в robot.txt по две строчки, одну с символом "/" в конце строки и строку без символа "/":

Disallow: /admin/
Disallow: /comment/reply/
Disallow: /contact/
Disallow: /logout/
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
# Paths (clean URLs)
Disallow: /admin
Disallow: /comment/reply
Disallow: /contact
Disallow: /logout
Disallow: /node/add
Disallow: /search
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
# Paths (no clean URLs)
Disallow: /?q=admin/
Disallow: /?q=comment/reply/
Disallow: /?q=contact/
Disallow: /?q=logout/
Disallow: /?q=node/add/
Disallow: /?q=search/
Disallow: /?q=user/password/
Disallow: /?q=user/register/
Disallow: /?q=user/login/
# Paths (no clean URLs)
Disallow: /?q=admin
Disallow: /?q=comment/reply
Disallow: /?q=contact
Disallow: /?q=logout
Disallow: /?q=node/add
Disallow: /?q=search
Disallow: /?q=user/password
Disallow: /?q=user/register
Disallow: /?q=user/login

Интересно, специалисты по robot.txt, вариант Бена (Ben Finklea) действительно имеет смысл или это избыточность?

Аватар пользователя _Igor_ _Igor_ 21 февраля 2011 в 9:12

И еще вопрос по robot.txt возник.
Если сайт многоязычный, то надо ли добавлять Disallow для каждого языка?
Например:

Disallow: /user/login
Disallow: /ru/user/login
Disallow: /sp/user/login

или достаточно

Disallow: /user/login

?

Аватар пользователя vitok vitok 21 февраля 2011 в 12:07

Если глянуть его видео то становится понятно для чего дублировать, т.к. по сути со слешем и без, это всегда дублированный контент (один и тот-же контент доступный с разных адресов), что плохо для SEO поэтому для устранения этой проблемы Globalredirect используют.
А для роботов эта проблема решатся просто дублированием правила со слешем и без

Аватар пользователя vitok vitok 21 февраля 2011 в 12:21

А в случая с языками это делаться так:

Disallow: /*user/login
Disallow: /*user/login/

Хотя вообще по идее можно просто в одну строчку без всякого дублирования.
Disallow: /*user/login*

Аватар пользователя Shift-Web Shift-Web 21 февраля 2011 в 14:30

"_Igor_" wrote:
В книге «Drupal 6 Search Engine Optimization» автор, Ben Finklea, советует делать в robot.txt по две строчки, одну с символом "/" в конце строки и строку без символа "/":

Здесь комплексная конфигурация под Global Redirect описана.

Аватар пользователя Shift-Web Shift-Web 21 февраля 2011 в 20:39

"_Igor_" wrote:
Понятно.
Спасибо!

Скажите, в книге есть что то интересное критично руНет. Вообще какая подача информации и с каким уклоном? Стоит вообще эту книгу брать?

Аватар пользователя _Igor_ _Igor_ 21 февраля 2011 в 22:36

"Shift-Web" wrote:
Скажите, в книге есть что то интересное критично руНет. Вообще какая подача информации и с каким уклоном? Стоит вообще эту книгу брать?

Если честно, я бы не советовал тратить деньги (до конца книгу еще не просмотрел, но 2/3 ничего нового не принесли). Можно скачать для ознакомления, на wowebook.com вроде была.
В общем-то, описывает тот же набор методов и модулей, что и Вы, про внесение изменений в код шаблонов не упоминается. Ну и googl конечно. Про руНет ничего нет.

P.S. Пользуясь случаем спрошу, может глянете вот этот мой вопрос, тоже связанный с SEO

Аватар пользователя vitok vitok 21 февраля 2011 в 22:47

"_Igor_" wrote:
Скажите, в книге есть что то интересное критично руНет.

По поводу рунета там вообще ничего быть не может т.к. книжка не русская. Я правда смотрел видео Lullabot - Drupal SEO где автор выше упомянутой книги 5 часов про SEO рассказывает. Я там чуть не "кончился" (больше часа на просмотр, не выдерживал), ИМХО самое нудное видео из серии Lullabot-ов, но не смотря на это полезного для себя узнал не мало.

Аватар пользователя uka1992 uka1992 28 февраля 2011 в 12:21

вопрос по robots.txt

1) если у меня по запросу "/news/" и "/news" открывается один и тот же контент, то мне необходимо закрыть один из них (позволит избежать дублирования)?

2) почему по умолчанию в robots.txt не закрывают доступ к "/user/", а лишь к "/user/register/" и подобные, зачем поисковику "/user/"?

Аватар пользователя Shift-Web Shift-Web 28 февраля 2011 в 16:48

"uka1992" wrote:
1) если у меня по запросу "/news/" и "/news" открывается один и тот же контент, то мне необходимо закрыть один из них (позволит избежать дублирования)?

Вам нужно поставить global redirect, настроить его и закрыть только /news.

"uka1992" wrote:
2) почему по умолчанию в robots.txt не закрывают доступ к "/user/", а лишь к "/user/register/" и подобные, зачем поисковику "/user/"?

Спросите у Дриса или там ещё кого нибудь -- будет наверное разумнее у них спросить. Вообще незачем. Профиля тоже ничего не содержат, как правило. Можно грохнуть смело. Спамить не перестанут по профайлам, но меньше говна будет в индексе.

Аватар пользователя bratello bratello 4 марта 2011 в 17:30

"Shift-Web" wrote:
Профиля тоже ничего не содержат, как правило.

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

Аватар пользователя bratello bratello 4 марта 2011 в 18:28

Отличная статья, приличный технический скил, очень внимательное и бережное отношение к контенту сайта. Это здорово, современный человек должен бережно относиться к тому контенту, который он создаёт, будь то контент в блоге, на форуме, или на страницах его интернет магазина.

Но мне кажется, было бы здорово еще описать и сементическую сторону поисковой инженерии, ведь это не только теги и карты сайта. Вы верно подметили, что SEO это очень мутная тема, прежде всего потому что существует мало вменяемых инструкций как это делать, масса слухов, догадок, в результате которых интернет пользователи делают очень много ошибок, в лучшем случае засоряя интернет хламом, в худшем случае попадая на удочку разным мошенникам. Пример из жизни - знакомая попала в неприятную ситуацию, ей собрали сайт который толком и не работает; дальше ее данные "сайтостроители" передают "поисковым оптимизаторам". Хорошо что она вспомнила обо мне в этот момент, потому что ничего не понимает в этом, я проверил ключевики по которым "специалисты" предлагали ей продвигать сайт - поисковый трафик нулевой, знакомой гарантировали что по этим ключам она будет на первом месте в google. Через месяц ей перезвонили дургие "специалисты", которые предложили ей другие ключевики, с неплохим поисковым трафиком, который правда существовал всего один месяц. В итоге знакомая попала всего навсего на 2т длр за чудо-сайт, можно сказать легко отделалась.

Мне кажется, что профи должны быть кровно заинтересованы в том, чтобы тему поисковой оптимизации наиболее полно раскрыть, чтобы в этой теме появилось как можно больше профессионалов, только так можно избавиться от мошенников и делитантов, ведь в большинстве случаев они и сами толком не понимают как правильно оптимизировать сайт.

Потому предлагаю совместно написать руководство, подобное этому, применительно к нетехническим аспектам поисковой оптимизации. Для примера можно взять один весьма полезный сайт, и попытаться в статье подробно раскрыть аспекты поисковой оптимизации, как то: составление семантического ядра для сайта (как правильно создавать семантическое ядро, сколько ключевых слов выделять для важных страниц сайта - одни говорят что нужны ключевики как можно больше, другие говорят что нужно два три, исключая повторяемость); легальные методы создания backlinks (правила создание контекстной ссылки - ссылки типа www.mysite.com на самом деле никому не нужны, почему контекст ссылки и контекст самого топика должны соответствовать ключевикам которые расположены на целевой странице, почему не имеет смысла создавать backlink только для главной страницы, инструменты для обнаружения удобных и выгодных контекстов для расположения backlinks - если существует инструмент типа Google Alerts значит поисковые системы нуждаются в том чтобы вы распространяли ссылки на свои сайты правильным образом, они нуждаются в вашей помощи). И т.д и т.п.

Аватар пользователя Shift-Web Shift-Web 4 марта 2011 в 18:40

bratello, проблема в том, что это CMF и всех тонкостей предусмотреть нельзя. Уже есть информация для дополнения, но увы, шестая ветка отмирает, а седьмая ещё будет ковыряться нное кол-во времени.

Именно по этому меня терзают смутные сомнения надо ли продолжать эту тему. Есть конечно, что дополнить в этот мануал и есть немало, но целесообразность опять же ... В целом постоянно находится что то что можно подкрутить.

В SEO достаточно мало не технических аспектов, тут как раз таки работает по большей части понимание взаимодействия частей системы и её настроек и внимание к тенденциям по времени. Что касается контентной оптимизации, то это уже немного другая тема.

"bratello" wrote:
Но мне кажется, было бы здорово еще описать и сементическую сторону поисковой инженерии

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

"bratello" wrote:
Мне кажется, что профи должны быть кровно заинтересованы в том, чтобы тему поисковой оптимизации наиболее полно раскрыть, чтобы в этой теме появилось как можно больше профессионалов, только так можно избавиться от мошенников и делитантов, ведь в большинстве случаев они и сами толком не понимают как правильно оптимизировать сайт.

Проблема этого явления заключается в том, что это фактически несуществующая отрасль, но если присмотреться внимательнее, то всё вполне закономерно. Причина в том, что люди мешают съедобное с пушистым.

Банально. Есть у SEO подотрасли SMO(спорный вопрос, я склоняюсь к тому, что это нужно разделять), создание контента, брендинг, увеличение узнаваемости\весомости и т.д. Всё это варится в одном котле, мало ведь кто занимается чисто SMO или чисто оптимизаций, здесь всё тесно связано и запутано.

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

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

Слово профессионал опять же не совсем точно отражает суть. Профессионал чего?

Поэтому SEO «по праву» считается несуществующим. Так же как маркетинг, к примеру. Здесь, например, у 80% старожилов аббревиатура SEO вызывает латентный понос и так почти везде Biggrin

Аватар пользователя bratello bratello 4 марта 2011 в 23:21

Ну я имел ввиду не Semantic Web, там действительно все еще не скоро разродится. Я читаю периодически статьи о развитии идей Semantic Web, думаю если компании типа Google не приложат к этому свою руку, то это еще долго будет находиться на стадии идей. Но идеи там на самом деле революционные, но мало того что прийдется отказаться от HTML5, так еще и требуется поддержка навигатора, а возможно и сервера, речь ведь идет о machine self described documents!

Я лишь имел веду речь о элементарных вопросах семантики сайта, которые на сегодняшний день специалисты поисковой инженерии должны реализовывать вручную. Как то просто элементарно подобрать список ключевиков для страницы, для раздела, для сайта в целом. SMO опять же, не уверен что это нужно разделять, в конечном счете все упирается как всегда в бюджеты, в идеале версткой и программингом должны заниматься разные люди, а на деле разделения до сих пор не существует, при том что сайтостроительство уже существует не одно десятилетие.

Что касается силы технических аспектов - согласен. Но сайт может быть тысячу раз быть грамотно оптимизирован, а поискового трафика он никогда может и не увидеть.

Еще 10 лет назад считалось что маркетинг это несуществующая специальность. И если еще 5 лет назад профессия Sales Engineer как то резала ухо, то сегодня во многих компаниях это норма. Кстати многие специалисты из Sales делают свитч в SEO, ну или по крайней мере активно применяют методологию SEO в маркетинговых целях. И они во многом правы, какая разница куда нагонять толпу - в супермаркет или в интернет магазин. На моих глазах несколько молодых ребят сделали отличную карьеру в крупной компании в качестве SEO Engineer, думаю со временем индустрия устаканится, все еще впереди.

Аватар пользователя Shift-Web Shift-Web 5 марта 2011 в 8:56

"bratello" wrote:
Ну я имел ввиду не Semantic Web, там действительно все еще не скоро разродится. Я читаю периодически статьи о развитии идей Semantic Web, думаю если компании типа Google не приложат к этому свою руку, то это еще долго будет находиться на стадии идей. Но идеи там на самом деле революционные, но мало того что прийдется отказаться от HTML5, так еще и требуется поддержка навигатора, а возможно и сервера, речь ведь идет о machine self described documents!

Пока до семантик веб не доберутся SEOшники он так и будет мифической утопией. Потому что SEOшники до поискового трафика самые охотники и будут всякие шняги пробовать до которых у других людей просто фантазии не хватит. А SEO шники уже проявляют нехилый интерес. Одних сеошников тут мало, потому что делать всё это руками ебанистический труд, профит от которого вообще не виден пока. Нужны соотвественно инструментарии, сервисы, информация нужна которой на русском языке тупо нет, программирование в конце концов. Даже если не по русски понимаешь и можешь читать нет грантии, что эта информация которая выгорит. Тут очень сильно вырисовывается факт того, что есть мёртвые ветви, которые болтаются ни туда и ни сюда.

Вот щас в 7ке вроде чёто шевелится. Пойдите заставьте человека забубенить сайт, который будет корректно отображаться с заголовком applicaton xhtml\xml, если он всю жизнь на таблицах говнокодил и теги закрывать из под палки научился. Базару ноль для него HTML5 как мана небесная. Пересматривал сегодня тенденции, перечитывал кое что, старые сурсы из закладок посещал. Собственно ...

тыц (гугл)
тыц (смотрите внимательнее под капот)
тыц (тренды)
тыц (яндекс)

Кстати, если кого тема интерсует, откопал в поиске бложек на инглише. У товарища стоит друпло и достаточно интерсные вещи есть на тему semantic web и rdfa.

Это совсем немногое из того, что в принципе можно уже смотреть и реализовывать. У гугля медленно двигается. Даже пока описать толком не получается(информации мало), больше на социальную активность упор делают и поведенческие факторы.

"bratello" wrote:
прийдется отказаться от HTML5,

Да хрен с ним, если честно. А если подумать немного, то наверное и на нём это будет частично задействовано со временем. Жалко, что xHTML2 загубили (эта штуковина поинтереснее будет).

"bratello" wrote:
думаю со временем индустрия устаканится, все еще впереди.

Устаканится и даже не вопрос.

Аватар пользователя Goodseeker Goodseeker 10 июля 2011 в 19:34

Shift-Web wrote:
Минимальный набор компонентов: Nodewords, Administration interface for Nodewords, Basic meta tags, Meta tags for custom pages, User interface for Nodewords. Включаем эти компоненты, а остальные удаляем из папки модуля.

Спасибо за Ваш труд!
Очень познавательно - статью добавил в закладки.

Скажите, зачем нужно удалять из директории модуля неиспользуемые модули?

Аватар пользователя Cyber Cyber 10 июля 2011 в 19:47

"Goodseeker" wrote:
Скажите, зачем нужно удалять из директории модуля неиспользуемые модули?

Хм ... меньше лишней информации в админке - проще работать. некоторый модули инициализируются будучи выключенными.

http://drupalsn.ru/blogs/seo/225

------

На днях обновлю обе статьи

Аватар пользователя xxandeadxx xxandeadxx 10 июля 2011 в 19:51

"Cyber" wrote:
некоторый модули инициализируются будучи выключенными.

ага, их по вечерам инициализирует лично дрис

Аватар пользователя d3nn1s d3nn1s 24 августа 2011 в 16:31

у меня следующая проблема - в индексе у яндекса с моего сайта находятся ссылки типа node/число.
я хочу привести в соответствие названия ссылок на сайте (ЧПУ) и ссылок в индексе.
вопрос: имеет ли смысл добавить в robots.txt следующую строчку Disallow: /node/
?
или это может повлиять на то, что соответствующие им ссылки-синонимы не проиндексируются?

Аватар пользователя Cyber Cyber 24 августа 2011 в 23:16

"Funtik44" wrote:

Я правильно понял на счет robots.txt - если я впишу:
Disallow: /content$
То страницы типа:
http://mysite.ru/content/название-какого-то-контента
Останутся для индексирования???

да, останутся. это действует только конечный сегмент локального пути с хвостиком($) Wink

"d3nn1s" wrote:
имеет ли смысл добавить в robots.txt следующую строчку

Disallow: /node/

?

Я бы посоветовал сделать иначе.

Disallow: /node$ + rel="canonical" на нужный синоним(path or pathauto).

Всё настраивается модулями token и nodewords в 6м друпале. На счёт 7го пока ничего сказать не могу, не успел до него добраться, да и оптимизировать и выводы делать там пока рано.

"d3nn1s" wrote:
или это может повлиять на то, что соответствующие им ссылки-синонимы не проиндексируются?

нет, это совершенно разные страницы для ПС, если не учитывать факт схожести по контенту.

Аватар пользователя Antoniy Antoniy 23 марта 2012 в 15:56

С топика ведут ссылочки на shift-web.ru А хостинг пишет, что аккаунт заблокирован. Интересно за что, если не секрет?

Аватар пользователя 0legka 0legka 26 марта 2012 в 9:25

"Cyber" wrote:
Amen

Я думаю что сео оптимизация будет всегда и для всех актуальна... хотя может просто обсуждение затухло Sad

Аватар пользователя Funtik44 Funtik44 2 октября 2012 в 21:12

У меня D7, на главной вся информация выводится посредством блока (views), материалы на главную не выводятся (опубликовать на главной). Контент из модулей повторяется в других разделах. Вопрос - что нужно блокировать, а что нет? Например выводятся новости через блок на главной, и повторяются в виде тизеров в другом разделе, да еще и раскрыв тизер увидим полную статью. Как правильно поступить в этом случае?

Аватар пользователя Antoniy Antoniy 10 декабря 2012 в 11:42

А я нашел нужный фильтр, который парсит адреса в ссылках в текстах с /node/nid на алиас ноды. Если поменять алиас ноды, то фильтр показывает старый алиас. Но если почистить кеш Drupal, то вуаля - фильтр показывает уже новый (действующий) алиас.

Очень полезно, можно теперь везде вставлять /node/nid и не париться, а фильтр будет показывать только действующие алиасы..

Это CKEditor Link - A plugin to easily create links to Drupal internal paths, он же опция для удобной вставки внутренних ссылок через редактор CKEditor.

Аватар пользователя mykhailyuk mykhailyuk 21 января 2014 в 20:11

"Cyber" wrote:
Я бы посоветовал сделать иначе.
Disallow: /node$ + rel="canonical" на нужный синоним(path or pathauto).
Всё настраивается модулями token и nodewords в 6м друпале.

А можно поподробней. Нужно установить nodewords и обязательно токен? И в robots нужно открыть доступ к категории Disallow: /node/?
Еще вопрос: может лучше сделать 301 редирект в для устранения дублей? Как думаете?