Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Возможности поисковой оптимизации сайта (SEO)
Основные возможности по SEO
- Генерация Sitemap.xml
- Управление robots.txt
- Канонизация URL
- Микроразметка
- ЧПУ
- 404
- Хлебные крошки
- Управление Title, Description, Keywords
Sitemap.xml
Sitemap.xml генерируется в процедуре falcon_sitemap - данную процедуру можно менять под себя. Для получения данной возможности необходимо обновить/создать falcon_sitemap, rs_sitemap_getFile и написать правило редиректа в web.config
<rule name="Sitemap.xml" stopprocessing="true">
<match url="(.*)sitemap\.xml"></match>
<action type="Rewrite" url="/Controls/Resource/GetFile?code=sitemap"></action>
</rule>
Примечание: домен передается в параметре as_domain в процедуру falcon_sitemap
Robots.txt
Robots.txt - файл, задающий предписания для поисковых систем как индексировать страницы сайта.
Управление robots реализовано через механизм подгружаемых файлов. (см. соответствующий подраздел про Ресурсы).
По умолчанию статичные части этих файлов реализованы в виде настроек robots.txt в Системных элементах (Системный SQL - /sysSP).
Для более сложной генерации измените хранимую процедуру для типов подгружаемых файлов для кода robots.
Также в файле web.config можно добавить следующие правила в раздел rewrites для доступности стандартных адресов для robots
<rule name="Robots" stopprocessing="true">
<match url="(.*)robots\.txt"></match>
<action type="Rewrite" url="/Controls/Resource/GetFile?code=robots"></action>
</rule>
Микроразметка
Микроразметка позволяет поисковым системам лучше понимать, что расположено на странице и улучшает поисковую выдачу.
В сниппете сайта в поисковой выдаче появляются дополнительные элементы.
Для включения микроразметки, необходимо указать схему в GetLayout
‘http://schema.org/WebPage’ SchemaTypeBody
Если она указана, то у body проставляется схема (в общем случае можно использовать http://schema.org/WebPage).
См. также статью как сгенерировать микроразметку 3 типов через HTML блок.
Хорошая статья с примерами микроразметки - https://artzolin.ru/articles/schema-snippets/
- http://schema.org/
- Документация от Яндекса https://yandex.ru/support/webmaster/schema-org/what-is-schema-org.html
Ключевые схемы:
- http://schema.org/Product - товар
- http://schema.org/WebPage - общее для страницы
- http://schema.org/mainEntity - основной элемент на странице (в рамках WebPage)
- http://schema.org/Thing - описание некоего объекта
Валидаторы разметки:
- Валидатор от гугла https://search.google.com/structured-data/testing-tool/u/0/?hl=ru
- Валидатор от яндекса https://webmaster.yandex.ru/tools/microtest/
- https://validator.schema.org/
- Расширенные результаты Google - https://search.google.com/test/rich-results?hl=ru
Подробные статьи:
Генераторы разметки
Генератор OG (микроразметка Opengraph для соцсетей)
https://a.pr-cy.ru/tools/open-graph-generator/
Генерация микроразметки для поисковиков (Schema.org)
https://technicalseo.com/tools/schema-markup-generator/
Примечание:
- Для вставки микроразметки в каталог используйте HeadSection и BodyBottomSection, а также кастомную разметку страниц каталога.
Примеры для типовых страниц:
< script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "WebPage",
"name": "Falcon Space - Web-applications for business",
"thumbnailUrl": "https://falconspace.ru/content/images/falcon.png",
"description": "Create your own business web-applications on Falcon Space with SQL/Bootstrap"
}
Микроразметку для страниц необязательно делать статичной, просто разместив ее в блоке скриптов CSS.
Можно использовать в процедуре SQL Страницы SELECT 2 параметр HeadSection для вставки нужной динамической микроразметки.
Примечание. В мессенджерах данные микроразметки кешируются. Для просмотра обновленных данных микроразметки по странице необходимо добавлять некий параметр в URL (чтобы адрес был всегда новым для мессенджера), либо использовать бот Телеграм @WebpageBot: вписываем адрес и по кнопке он обновляет предпросмотр.
Хлебные крошки
Хлебные крошки - это ссылки вверху страницы, определяющие логический путь до этой страницы от начала сайта.
Хлебные крошки определяют структуру проекта.
Они прописываются в SQL каждой страницы.
Для каталогов они генерируются в соответствии со структурой категорий каталога
Хлебные крошки имеют микроразметку (для этого надо включить в GetLayout микроразметку в WebPage)
‘http://schema.org/WebPage’ SchemaTypeBody
Управление тегами Title, Meta Description, Meta Keywords, h1
Эти элементы управляются через SQL каждой отдельной страницы.
Для каталога они генерируются через хранимые процедуры каталога.
ЧПУ (Человеко-понятный УРЛ)
Для каждой страницы можно задать свой точный URL (код страницы), тем самым включив в него главные ключевые слова.
В каталоге адреса генерируются на основе иерархии категорий и наименования товара, что позволяет легко понять по адресу какой товар грузится и в какой категории он находится.
Также в каталоге помимо категории в адрес попадают названия и значения фильтров. Каждая страница статична для поисковиков и может индексироваться (загрузка без применения JS)
Страница 404
Создайте страницу с кодом notfound (по умолчанию она уже есть в базе). Страница будет отдавать HTTP статус 404.
Примечание: в reg.ru хостинге по умолчанию статус 404 перехватывается и переводит на страницу 404 от reg.ru. Для изменения этого правила добавьте в web.config следующее правило:
<httperrors existingresponse="Replace">
<remove statuscode="404" substatuscode="-1"></remove>
<error statuscode="404" prefixlanguagefilepath="" path="uploads\404.html" responsemode="File"></error>
</httperrors>
При этом страница 404.html должна быть статичным html файлом на сервере, а не страницей в Falcon Space
Канонизация URL
ВАЖНО! Примеры лучше брать по ссылке на pastebin, а не копировать из документации.
Убрать завершающий слеш
<rule name="Remove trailing slash" stopprocessing="true">
<match url="(.*)/$"></match>
<conditions logicalgrouping="MatchAll" trackallcaptures="false">
<add input="{REQUEST_FILENAME}" matchtype="IsFile" negate="true"></add>
<add input="{REQUEST_FILENAME}" matchtype="IsDirectory" negate="true"></add>
</conditions>
<action type="Redirect" url="{R:1}" redirecttype="Temporary"></action>
</rule>
Привести все в нижний регистр
Правило исключает ajax запросы, которые перестают работать из-за ненужных редиректов
ВАЖНО! Обратите внимание на строку с add input="{URL}" pattern="[А-Я]" negate="true" - она исключает из обработки адреса, где есть русские буквы (если ее оставить, то адреса с кирилицей будут неверно обрабатываться).
<rule name="LowerCaseURL" stopprocessing="true">
<match url="[A-Z]" ignorecase="false"></match>
<conditions logicalgrouping="MatchAll">
<add input="{HTTP_X_Requested_With}" pattern="^XMLHttpRequest$" negate="true"></add>
<add input="{URL}" pattern="[А-Я]" negate="true"></add>
</conditions>
<action type="Redirect" url="{ToLower:{URL}}"></action>
</rule>
Убрать www
<rule name="Remove www" stopprocessing="true">
<match url="(.*)" ignorecase="true"></match>
<conditions logicalgrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$"></add>
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" appendquerystring="true" redirecttype="Permanent"></action>
</rule>
или
<rule name="Remove WWW" enabled="true" stopprocessing="true">
<match url="(.*)"></match>
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)(sitename\.com)"></add>
</conditions>
<action type="Redirect" url="https://{C:2}/{R:1}"></action>
</rule>
Наоборот - добавить www
Правило - https://pastebin.com/z1EEynGY
<rule name="Add WWW" stopprocessing="true">
<match url="^(.*)$"></match>
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$"></add>
</conditions>
<action type="Redirect" url="https://www.{C:0}{PATH_INFO}" redirecttype="Permanent"></action>
</rule>
Переход на HTTPS
<rule name="Redirect to http" patternsyntax="Wildcard" stopprocessing="true">
<match url="*" negate="false"></match>
<conditions logicalgrouping="MatchAny" trackallcaptures="false">
<add input="{HTTPS}" pattern="off"></add>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirecttype="Temporary"></action>
</rule>
Установка тега link canonical и hreflang
Используем в head разделе следующие элементы:
<link rel="canonical" href="https://example.com/dresses/green-dresses">
<link rel="alternate" href="http://example.com/" hreflang="x-default">
<link rel="alternate" href="http://otherdomain.com/" hreflang="ru"> <!-- en uk -->
Для alternate hreflang мы указываем адреса локализованных версий (т.е. будет другой домен или добавка языка в URL).
href должен содержать полный адрес с доменом, с https:// и всеми параметрами в URL.
Не используйте hreflang на неканонических страницах (например на страницах пагинации с page>=2).
Подробнее о hreflang - https://seranking.ru/blog/seo/atribut-hreflang/
Подробнее о canonical - https://siteclinic.ru/blog/technical-aspects/rel-canonical/
Пример использования для компонента list (страница 1 элемента) в list_..._getItem:
declare @langID int
select @langID = try_cast(value as int) from @parameters where [key] = 'langID'
if isnull(@langID,0)=0 set @langID = 2
declare @url nvarchar(max), @domain nvarchar(128) = iif(@langID=2, 'falconspace.ru', 'falconspace.site')
select @url = dbo.list_getProductUrl(sol.id, isnull(sol.code, ''), 'solutions', '---')
from as_falconSolutions sol
where sol.isPublished=1 and sol.id = @itemID
declare @canon nvarchar(max) = '
здесь прописываем теги link canonical
'
-- select 1
select @canon HeadSection
Использование разных языков (локализация) и SEO
Используйте метатеги hreflang в разделе HEAD https://habr.com/ru/post/352082/
В качестве продвижения по разным языкам целесообразно использовать поддомены основного домена (ru.site.com, de.site.com). При этом в GetLayout необходимо установить defaultLangID.
How to SEO
Как сделать правильный редирект на новый адрес страницы (301 редирект)
Для этого в web.config в раздел rules прописываем правило:
<rule name="solutionRealty" stopprocessing="true">
<match url="^home/solution/realty" ignorecase="true"></match>
<action type="Redirect" url="/list/solutions/realty---9" redirecttype="Permanent"></action>
</rule>
Как ставить цели в Яндекс Метрике
Подробности https://yandex.ru/support/metrica/objects/reachgoal.html
Об интеграции с яндекс метрикой можно прочитать здесь.
В JS коде в обработчике клика на кнопке прописываем
ym(XXXXXX, 'reachGoal', 'TARGET_NAME');
где XXXXX - номер счетчика.
Как прописать канонический адрес для страницы
Для этого указываем в редактировании параметров страницы, в разделе Подключение файлов стилей каноническую ссылку:
<link rel="canonical" href="http://site.ru/statya1">
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта