Техническая СЕО-оптимизация сайта: комплексный подход
SEO

Техническая СЕО-оптимизация сайта: комплексный подход

1.Общие рекомендации:

  • Продлить срок домена на максимальное возможное время
  • Не используйте ключевые слова в названии домена
  • Только безопасные онлайн оплаты (без ручного перевода)
  • Обновлять SSL сертификат
  • Обязательно антивирус на сервере, обновлять версию CMS, надежный пароль в админ панель
  • Следить за вирусами/тех.проблемами на сайте, быстро реагировать
  • Все страницы должны иметь форму связи (чат, консультация, звонок)
  • Добавить максимальное количество юридической информации о компании, сертификаты/лицензии, информация о сотрудниках, и т.д.
  • Добавляйте больше адресов, номеров телефонов, регионов обслуживания
  • Отсутствие скрытого текста (как скрытого стилем hidden, так и текст одного цвета с фоном)
  • Наличие быстрой прокрутки наверх (желательно как минимум для телефонов)
  • Предупреждать пользователей о cookies, если надо, всплывающим окном (но не перекрывать весь сайт, только небольшое окно или полоска внизу/вверху)

2.Настройка URL:

Склейка главного зеркала с WWW и без WWW

  • Все ссылки указывать через HTTPS (если по каким-то причинам нельзя - обязательно установить редиректы)
  • Проверка технических дублей /index.html, /index.php, /index.htm, /default.php и др., установка редиректов
  • Проверка, что ссылки с несуществующим URL отдают статус-код 404
  • В конце каждого URL должен стоять слэш " / "
  • Корректное изображение URL

Категории должны отображаться в URL (так как названия длинные, то в сокращенном виде - 1-2 главных слова)

Все URL должны быть в ЧПУ (человеко понятном виде):

  • никаких русских букв - только правильная транслитерация латиницей
  • использовать только буквы, цифры и тире “ - ”
  • без артиклей и связных слов (такие как “и, в, а, или” и др., максимально их убирать)
  • специальные слова как бренды писать на английском. Желательно также и другие технические слова писать на английском - цвет, название материала и т.д. (red вместо krasnyi)
  • без технических обозначений (пример: id=454 ), только понятные слова

3.Sitemap:

Должна располагаться по адресу https://example.com/sitemap.xml.

Желательно разбить на подкарты (карта блога, отдельные карты категорий и т.д.), должна самообновляться при добавлении новых страниц на сайт. Шаблон карты с содержанием подкарт: (с подкартами адрес будет https://example.com/sitemap_index.xml)

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>{ссылка на подкарту 1}</loc>
      <lastmod>{дата последнего изменения}</lastmod>
   </sitemap>
   <sitemap>
      <loc>{ссылка на подкарту 2}</loc>
      <lastmod>{дата последнего изменения}</lastmod>
   </sitemap>
</sitemapindex>

Не должна местить несуществующих, редиректных, поломанных ссылок или ссылок с атрибутом noindex. Только канонические ссылки. Пример (шаблон):

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
  <loc>{ссылка на страницу}/</loc>
  <lastmod>{дата последнего изменения}</lastmod>
  <image:image>
  <image:loc>{ссылка на изображение}</image:loc>
  <image:caption>{подпись к изображению}</image:caption>
  <image:title>{title изображения}</image:title>
  </image:image>
  </url>
</urlset>

Дополнительные типы контента: изображение, видео, новости. changefreq и priority добавлять не нужно lastmod формат: 2020-08-27T19:36:10+00:00 или 2020-08-27

Для указания языковых версий, добавить данный шаблон внутри тега url: (добавить все версии страницы, включая саму себя)

<xhtml:link
  rel="alternate"
  hreflang="{код языка}"
  href="{ссылка на страницу в этом языке}"/>
 

Дополнительные инструкции: https://www.sitemaps.org/protocol.html

Сгенерировать HTML карту сайта и оформить ее в удобном и красивом стиле, добавить ссылку в футер (по адресу https://example.com/sitemap.html).
Пример:

Пример HTML карты

4.Robots.txt:

  1. Файл должен располагаться по адресу https://example.com/robots.txt
  2. В конце файла ссылка на хост и карту сайта
  3. Проверка заблокированных страниц (админ страницы, кеш, т.д.), открыть доступ к изображениям, файлам js/css и т.д.
  4. Заменить существующий файл на этот robots.txt
robots.txt для wordpress:

User-agent: *
Disallow: /cgi-bin
Disallow: /?
Disallow: /wp-
Disallow: *?s=
Disallow: *&s=
Disallow: */page/*
Disallow: /search/  
Disallow: /author/
Disallow: /users/
Disallow: */trackback
Disallow: */feed
Disallow: */rss
Disallow: */embed
Disallow: /xmlrpc.php
Disallow: *utm=
Disallow: *openstat=
Disallow: /tag/
Disallow: /readme.html
Disallow: *?replytoco
Allow: */uploads
Allow: /*/*.js
Allow: /*/*.css
Allow: /wp-*.png
Allow: /wp-*.jpg
Allow: /wp-*.jpeg
Allow: /wp-*.gif
Allow: /wp-admin/admin-ajax.php

User-agent: GoogleBot
Disallow: /cgi-bin
Disallow: /?
Disallow: /wp-
Disallow: *?s=
Disallow: *&s=
Disallow: /search/
Disallow: /author/
Disallow: /users/
Disallow: */trackback
Disallow: */feed
Disallow: */rss
Disallow: */embed
Disallow: /xmlrpc.php
Disallow: *utm=
Disallow: *openstat=
Disallow: /tag/ # Закрываем метки
Disallow: /readme.html
Disallow: *?replytocom
Allow: */uploads
Allow: /*/*.js
Allow: /*/*.css
Allow: /wp-*.png
Allow: /wp-*.jpg
Allow: /wp-*.jpeg
Allow: /wp-*.gif
Allow: /wp-admin/admin-ajax.php

User-agent: Yandex
Disallow: /cgi-bin
Disallow: /?
Disallow: /wp-
Disallow: *?s=
Disallow: *&s=
Disallow: /search/
Disallow: /author/
Disallow: /users/
Disallow: */trackback
Disallow: */feed
Disallow: */rss
Disallow: */embed
Disallow: /xmlrpc.php
Disallow: /tag/
Disallow: /readme.html
Disallow: *?replytocom
Allow: */uploads
Allow: /*/*.js
Allow: /*/*.css
Allow: /wp-*.png
Allow: /wp-*.jpg
Allow: /wp-*.jpeg
Allow: /wp-*.gif
Allow: /wp-admin/admin-ajax.php

Host: http://www.site.com/
Sitemap: http://www.site.com/sitemap.xml

5.HTML-разметка:

Использовать html5 для следующих элементов:

— Для главного меню использовать теги <ul> <li>. 

Для блока. "содержание статьи” - <nav> <ol> <li>, для how-to блока <ol> <li>.

Для обычного списка <ul> <li>. 

— Не использовать <frame> или <table> при создании структуры сайта (в случае с table - только для элементов таблицы)

— <img> дополнительно должен загружаться асинхронно (lazy) . Размеры изображения должны быть в html разметке, а не css (width и height в самом теге). Также под всеми картинками должен быть источник/описание картинки. Это должен быть элемент <span> и он должен быть именно внутри класса/тега картинки, а не как еще одна строчка текста.

<img aria-describedby="caption-text" src="small.jpg" srcset="large.jpg 1024w, medium.jpg 640w, small.jpg 320w" sizes="(max-width: 900px) 100vw, 900px" width="111" height="111" decoding="async" loading="lazy" alt="lorem" title="lorem ipsum">

<span id="caption-text"> 
<em>Текст подпись под изображением</em>
</span>
    • Для иконок и фоток которые не являются частью статьи alt теги должны быть пустые
    • В src вставить максимально качественное изображение на 5-10 мб
    • Использовать srcset для разных размеров экрана. В srcset ставить превьюшки какие будут отображать на сайте. Минимум картинки которая будет в контенте для моб - 640 ширины. + версии на 920, 1220 + оригинал.
    • Надо 4 виды изображений в формате 16: 9, 4: 3, 1: 1 В сумме 12шт. Это прописать в микроразметке
    • Все иконки (звезды рейтинга, лайки, иконки в шапке и меню) не вставлять через img тег. Использовать css или icon
  1. article - глобальный тег для страницы статьи
  2. section - секция, часть контента. Секцией считается заголовок + контент до следующего заголовка h2-h5. Также Секции могут быть внедрены друг в друга. Аналогично заголовкам h2-h4 Т.е. весь h2 большая секция. Н3 - секция внутри Н2 и тд
  3. aside Блоки которые не контент статьи - похожие статьи, оценить статью и тд должны быть в теге aside. Для хедера (меню) и футера должны быть соотв. теги header и footer. Тег main нужен после header и перед footer
  4. Если выделения текста используется только для красоты, элемент дизайна, использовать b. В других случаях по дефолту при выделения текста внутри статьи (для выделения важности фразы/текста) использовать strong
  5. Также должен соответствовать Core Web Vitals (сложно, но очень желательно)
    • LCP (отрисовка самого крупного контента) – время, за которое браузер отрисовывает самый крупный видимый элемент в области просмотра;
    • FID (задержка после первого ввода) – время между первым взаимодействием пользователя со страницей (нажатием на ссылку, кнопку и т. д.) и ответом браузера;
    • CLS (совокупное смещение макета) – показатель того, насколько элементы на странице смещаются во время ее загрузки.
    • Для хлебных крошек, для главный страницы, когда используется иконка вместо название страницы, в тайтле прописать title с главной страницы Пример:
      <a href=”#” title="Інтернет-магазин Rozetka.ua - №1"> + иконка + размеры иконки</a>​
    • Не использовать пустые ссылки в коде. Например:
      <a href="#" class="btn js-close-modal">Отмена</a> (кнопки открыть/закрыть/отменить)​
  6. Пример кода для комментариев:
    <section>
      <ul> 
        <li>
          <article>
          <section>
              <span>  Name LastName </span>
              <span>on November 24, 2017 at 6:44 am </span>
    
              <p>Example of comment for SEO</p>
          </section>
          </article>
        </li>
      </ul>
    </section>
    ​

    Глобальный блок комментов начинается с новой section.

    Идет ненумерованный список ul, а каждый комент li.

    Каждый комментарий брать в тег article.

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

    Если в комментарии будет ссылка, по дефолту обозначить ее с rel="ugc nofollow".

6.Индексация:

<meta name=”robots” content=”noindex, nofollow”>

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

Закрыть тестовые площадки/страницы/поддомены от индексации (если есть/будут)

7.Ссылки:

Убедиться, что указываете на сайте не поломанные и сразу прямые (не редиректные) ссылки.

Добавить атрибут rel=”nofollow” на внешние ссылки и открывать с новой вкладки. Все внутренние страницы открывать в том же окне (внутренние ссылки с атрибутом rel=“follow, index”)

Добавить набор звонка при клике на номер телефона, переход в приложение при клике на иконку (вайбер, телеграм и т.д.), переход при клике на email

8.Контент:

Наличие поиска по сайту

Страницы 404 должны быть оформлены под тематику сайта и местить следующие шаги для пользователей (Поиск по сайту, какие-то интересные материалы, “Возможно вас заинтересует…” и т.д.)

Убедиться, что на всех страницах установлен фавикон (обычно мини-логотип компании) и корректно отображается на всех устройствах

Добавить хлебные крошки на каждую страницу сайта. Хлебные крошки - путь от главной страницы к текущей, с ссылками на каждом элементе. >Обычно размещается после хедера, перед началом контента на странице. Последний элемент (текущая страница) сделать неактивным! (без ссылки). Главную (первую) страницу можно изображать в виде иконки Домик, если хлебные крошки занимают слишком много места.

9.Страница услуг:

Главное название услуги должно отображаться как единственный заголовок Н1 на странице. Остальные названия разделов отображать через Н2, менее важные - через Н3.

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

10.Страница контактов:

Добавить детальные адреса офисов с гугл картами, номеры телефона, имейлы, режим работы

Указать кликабельные иконки приложений viber, telegram, whatsapp с переходом в приложение, кликабельный номер телефона и кликабельный имейл

Добавить форму обратной связи (заявка, консультация)

11.Шапка:

В шапке должны быть указаны: лого, главное меню, поиск по сайту (возможно ниже шапки, но в верхней части сайта перед контентом), персональный аккаунт/корзина/избранное, возможность изменить язык

Желательно добавить в верхнюю часть сайта форму связи (напр. кликабельный номер телефона)

Логотип содержит ссылку на главную страницу. Но, кроме главной страницы. Т.е. не должно быть ссылки самой на себя

Убрать из главного меню ссылки на любые неиндексируемые страницы

12.Футер:

Полезную и важную для пользователей информацию размещать в основном контенте, а не в футере

В футере должны быть перечислены: главное меню (+ главные подкатегории если они вписываются в дизайн и понятно/удобно размещены), контакты, местоположение, ссылки на соц. сети (иконки), ссылки на Соглашение/Политику/другую техническую информацию, ссылка на HTML карту сайта, возможность изменить язык

13.Изображения:

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

Прописать атрибут alt для всех изображений. “название услуги + название города + название компании” (автоматически генерируется, через пробелы). Пример: alt = “Ремонт iPhone XS Max в Киеве GSM” (название компании можно полностью, можно сокращенно - смотря какая у вас больше узнаваемость)

14.Работа сайта:

Проверить код страницы на валидаторе HTML и устранить все ошибки

Проверка работоспособности всех форм на сайте

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

Улучшить скорость сайта. Проверить сайт на сервисах developers.google.com и gtmetrix.com и оптимизировать все указанные пункты

15.Метатеги и микроразметка:

Общие Метаданные для всех страниц:

— Метатеги:
    <meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="robots" content="index, follow">

    <meta name="keywords" content="{...}">
Нет потребности добавлять, если есть по дефолту - можно игнорировать или удалить полностью

    <meta property="og:type" content="website"> 

    <meta property="og:title" content="{текст заголовка с тега title}">

<meta property="og:description" content="{текст описания с тега description}">

    <meta property="og:image" content="{ссылка на главное изображение}">
<meta property="og:image:type" content="{тип изображения}"> https://en.wikipedia.org/wiki/Media_type
<meta property="og:image:width" content="{ширина в пикселях}">
<meta property="og:image:height" content="{высота в пикселях}">
<meta property="og:image:alt" content="{текст с атрибута alt}">

<meta property="og:url" content="{ссылка на текущую/каноническую страницу}">
 
    <meta property="og:locale" content="{код языка}">
<meta property="og:locale:alternate" content="{дополнительный код языка}">
https://docs.oracle.com/cd/E13214_01/wli/docs92/xref/xqisocodes.html

<meta property="og:site_name" content="GSM Centrs">
 
<link rel="canonical" href="{ссылка на каноническую страницу. Если такой нет, ссылка на текущую страницу (саму на себя)}">

<link rel="alternate" hreflang="{код языка}" href="{ссылка на текущую страницу на языке соответственно по коду}">

Добавлять столько таких тегов, сколько версий страницы есть на сайте (с разными кодами языков)

https://docs.oracle.com/cd/E13214_01/wli/docs92/xref/xqisocodes.html

 Breadcrumbs (хлебные крошки) cсылки размещать в порядке вложенности

<script type="application/ld+json">
{
  "@context": "https://schema.org/", 
  "@type": "BreadcrumbList", 
  "itemListElement": [{
    "@type": "ListItem", 
    "position": 1, 
    "name": "{название категории}",
    "item": "{ссылка на категорию}"  
  },{
    "@type": "ListItem", 
    "position": 2, 
    "name": "{название страницы}",
    "item": "{ссылка на страницу}"  
  }]
}
</script>

Пример:

<script type="application/ld+json">
{
  "@context": "https://schema.org/", 
  "@type": "BreadcrumbList", 
  "itemListElement": [{
    "@type": "ListItem", 
    "position": 1, 
    "name": "Category",
    "item": "http://example.com/category"  
  },{
    "@type": "ListItem", 
    "position": 2, 
    "name": "Subcategory",
    "item": "http://example.com/category/subcategory"  
  },{
    "@type": "ListItem", 
    "position": 3, 
    "name": "Page",
    "item": "http://example.com/category/subcategory/page"  
  }]
}
</script>

Local Business

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "GSM Centrs",
  "image": {
    "@type": "ImageObject",
    "url": "{ссылка на изображение}",
    "width": {ширина изображения в пикселях},
    "height": {высота изображения в пикселях},
    "caption": "{подпись, описание к изображению}"
  },
  "logo": {
    "@type": "ImageObject",
    "url": "{ссылка на лого}",
    "width": {ширина лого в пикселях},
    "height": {высота лого в пикселях},
    "caption": "{подпись, описание к лого}"
  },
  "founder": {
    "@type": "Person",
    "name": "{имя основателя}",
    "url": "{ссылка на страницу об основателе}",
    "sameAs": "{ссылка на его соц сети}"
  },
  "foundingDate": "{дата основания компании в формате 2020-08-26}",
  "numberOfEmployees": {
    "@type": "QuantitativeValue",
    "value": "{количество работников в компании}"
  },
  "slogan": "{слоган компании}",
  "description": "{описание компании}",
  "url": "http://www.gsmcentrs.lv/",
  "telephone": "28776772",
  "email": "centrsgsm@gmail.com",
  "priceRange": "{диапазон цен в формате: от 0 грн до 1 грн}",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Matīsa iela 31",
    "addressLocality": "Rīga",
    "postalCode": "LV-1001",
    "addressCountry": "LV"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 56.9564626,
    "longitude": 24.1350221
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "opens": "10:00",
    "closes": "19:00"
  },{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "11:00",
    "closes": "15:00"
  }],
  "sameAs": [
    "https://www.instagram.com/gsmcentrs/",
    "https://m.facebook.com/gsmcentrs"
  ]
}
</script>

Sitelinks Search Box

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "WebSite",
  "name": "GSM Centrs",
  "url": "http://www.gsmcentrs.lv/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "{ссылка на поиск по сайту}{search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>

Для страниц, которые нужно полностью закрыть от индексации и отслеживания поисковыми системами

<meta name="robots" content="noindex, nofollow">

Микроразметка FAQ (частозадаваемые вопросы)

Дублировать выделенный блок соответственно с количеством вопросов

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "about": {
    "name": "{название категории}",
    "url": "{ссылка на текущую страницу}"
  },
  "headline": "{заголовок страницы}",
  "mainEntity": [{
    "@type": "Question",
    "name": "{вопрос 1}",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "{ответ 1}"
    }
  },{
    "@type": "Question",
    "name": "{вопрос 2}",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "{ответ 2}"
    }
  },{
    "@type": "Question",
    "name": "{вопрос 3}",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "{ответ 3}"
    }
  }
]}
</script>

Микроразметка изображений:

<script type="application/ld+json">
  [{
    "@context": "https://schema.org/",
    "@type": "ImageObject",
    "contentUrl": "{ссылка на изображение}",
    "author": {
      "@type": "Organization",
      "name": "{название компании}"
    },
    "description": "{описание изображения}",
    "name": "{название изображения}",
    "contentLocation": {
      "address": {
  "@type": "PostalAddress",
  "streetAddress": "{название улицы}",
  "addressLocality": "{название города}",
  "postalCode": "{zip код}",
  "addressCountry": "{код страны UA}",
  "email": "{email адрес}"
      },
      "geo": {
          "@type": "GeoCoordinates",
          "latitude": {широта},
          "longitude": {долгота}
      }
    },
    "license": "{ссылка на раздел страницы конфиденциальности}",
    "acquireLicensePage": "{ссылка на страницу где можно узнать как получить права на картинку}",
    "datePublished": "{дата публикации в формате 2020-08-26}"
  }]
</script>
Viber Viber Telegram WhatsApp r0980677981@gmail.com Заказать звонок