Стенд приёмки TechAudit
Проверка: образец — Главная: ссылки на все проверки.
Рейтинг адрес совет сандалии неделя туфли склад. Товар характеристика покупатель а также производитель туфли кроссовки профиль адрес упаковка стиль. Избранное ботинки футболка при этом поддержка комплект куртка этикетка носки магазин витрина образ. Туфли избранное раздел коробка ярлык вечер рейтинг карточка. Сравнение раздел кроссовки то есть телефон посетитель рейтинг примерочная пальто зима ярлык.
Каждая страница ниже ломает одно правило и подписана, какое именно. Ожидаемые значения отчёта — в expected.md рядом с генератором стенда.
Страницы сайта
- Ссылка на несуществующий адрес (PageWithBrokenLinks)
- Ответ дольше таймаута (TimedOut)
- Ссылки http и https на одной странице (BothHttpHttpsLinks, HttpsPageLeadsToHttp)
- Ответ 200 на странице-заглушке (SoftNotFoundPage)
- Двойной слеш в адресе (DoubleSlashInUrl)
- Шесть параметров в адресе (MoreThan5ParametersInUrl)
Индексация
- Два тега canonical (MoreThan1Canonical)
- Canonical на несуществующий адрес (CanonicalLeadsTo4XX)
- Canonical на 500 (CanonicalLeadsTo5XX)
- Canonical на редирект (CanonicalLeadsToRedirect)
- Мета nofollow (NoFollowPage)
- noindex в теге и в заголовке (NoIndexInHtmlAndHttpHeader)
- nofollow в теге и в заголовке (NoFollowInHtmlAndHttpHeader)
- noindex и nofollow вместе (NoIndexAndNoFollow)
- Canonical с https на http (CanonicalFromHttpsToHttp)
- Canonical с http на https (CanonicalFromHttpToHttps) —
/http/canonical/, ссылки нет намеренно - Canonical на страницу с noindex (CanonicalToNoIndexPage)
- Canonical на неканоническую страницу (CanonicalToNonCanonical)
- Среднее звено цепочки canonical
- Конец цепочки canonical
- Canonical на страницу без входящих ссылок (CanonicalUnlinked)
- Относительный canonical (CanonicalRelative)
- Canonical с #фрагментом (CanonicalWithFragment)
- Canonical вне head (CanonicalOutsideHead)
- Canonical в теге и в заголовке Link различаются (CanonicalHeaderConflict)
- Директива закрытия целиком (RobotsNone)
- Дата выпадения из индекса (UnavailableAfterSet)
- Запрещён сниппет (NoSnippet)
- Запрещена индексация изображений (NoImageIndex)
- Сниппет ограничен вручную (SnippetLimited)
- noindex вне head (RestrictiveDirectiveOutsideHead)
Ссылки
- Страница-сирота (AbandonedPage) —
/orphan/, ссылки нет намеренно - Без исходящих ссылок (PageWithoutOutLinks)
- Ссылки на редиректы (PageWithLinksToRedirect)
- Мало входящих ссылок (FewIncomingLinks)
- Навигация не ссылками (NavigationNotLinks, ScriptOnlyNavigation)
- Ссылка через javascript: (JavascriptHrefLink)
- Ссылка только в noscript
- Цель ссылки из noscript (LinksOnlyInNoscript) —
/t/noscript-target/, ссылки нет намеренно - Слишком длинный адрес (UrlTooLong)
- Все внутренние ссылки nofollow (PageHasNofollowOutLinks)
- Nofollow и follow ссылки вместе (PageHasNoFollowAndDoFollowOutLinks)
- Страница по http со ссылками на https (HttpPageHasHttpsLinks) —
/http/links/, ссылки нет намеренно - Внешняя ссылка без nofollow (NoFollowNotUsedForExternalLinks)
- Источник nofollow-ссылки
- Только nofollow-ссылки ведут (NoFollowOnlyInlinks) —
/t/nofollow-target/, ссылки нет намеренно - Ссылка на несуществующий якорь (BrokenBookmark)
- Ссылка без текста (EmptyAnchorLink)
- Неинформативный текст ссылки (NonDescriptiveAnchor)
- Один текст — разные адреса (SameAnchorDifferentTargets)
- Больше трёхсот ссылок (TooManyLinksOnPage)
- target=_blank без noopener (UnsafeCrossOriginLink)
- Глубина: вход
- Глубина, уровень три, страница 1 —
/deep/b-1/, ссылки нет намеренно - Глубина, уровень три, страница 2 —
/deep/b-2/, ссылки нет намеренно - Глубина, уровень три, страница 3 —
/deep/b-3/, ссылки нет намеренно - Глубина, уровень три, страница 4 —
/deep/b-4/, ссылки нет намеренно - Глубина, уровень три, страница 5 —
/deep/b-5/, ссылки нет намеренно - Глубина, уровень три, страница 6 —
/deep/b-6/, ссылки нет намеренно - Глубина, уровень три, страница 7 —
/deep/b-7/, ссылки нет намеренно - Глубина, уровень три, страница 8 —
/deep/b-8/, ссылки нет намеренно - Глубина, уровень три, страница 9 —
/deep/b-9/, ссылки нет намеренно - Глубина, уровень три, страница 10 —
/deep/b-10/, ссылки нет намеренно - Глубина, уровень четыре, страница 1 —
/deep/c-1/, ссылки нет намеренно - Глубина, уровень четыре, страница 2 —
/deep/c-2/, ссылки нет намеренно - Глубина, уровень четыре, страница 3 —
/deep/c-3/, ссылки нет намеренно - Глубина, уровень четыре, страница 4 —
/deep/c-4/, ссылки нет намеренно - Глубина, уровень четыре, страница 5 —
/deep/c-5/, ссылки нет намеренно - Глубина, уровень четыре, страница 6 —
/deep/c-6/, ссылки нет намеренно - Глубина, уровень четыре, страница 7 —
/deep/c-7/, ссылки нет намеренно - Глубина, уровень четыре, страница 8 —
/deep/c-8/, ссылки нет намеренно - Глубина, уровень четыре, страница 9 —
/deep/c-9/, ссылки нет намеренно - Глубина, уровень четыре, страница 10 —
/deep/c-10/, ссылки нет намеренно - Дальше четырёх кликов (TooDeepPage) —
/deep/d/, ссылки нет намеренно
Редиректы
- Посадочная после 301 —
/landing/301/, ссылки нет намеренно - Посадочная после 302 —
/landing/302/, ссылки нет намеренно - Посадочная после цепочки —
/landing/chain/, ссылки нет намеренно - Посадочная после длинной цепочки —
/landing/long/, ссылки нет намеренно - Посадочная после переезда на https —
/landing/http/, ссылки нет намеренно - Посадочная адреса из карты —
/landing/sitemap/, ссылки нет намеренно - Посадочная по http —
/http/landing/, ссылки нет намеренно - Meta refresh в head (RefreshTagInHead)
Контент
- Два тега title (MoreThan1Title)
- Без title (TitleNotExistsOrEmpty)
- Слишком длинный title (TitleIsTooLong)
- Слишком короткий title (TitleIsTooShort)
- Два description (MoreThan1Description)
- Без description (DescriptionNotExistsOrEmpty)
- Слишком длинный description (DescriptionIsTooLong)
- Слишком короткий description (DescriptionIsTooShort)
- Без H1 (H1NotExistsOrEmpty)
- Два H1 (MoreThan1H1)
- Пропущен уровень заголовка (HeadingLevelSkipped)
- Текст без подзаголовков (TextWithoutSubheadings)
- Пустой заголовок (EmptyHeading)
- H1 не первый (H1NotFirstHeading)
- Без текста в body (NoTextInBody)
- Плейсхолдер шаблона в title (TemplatePlaceholderInMeta)
- Пустое значение в title (EmptyValueInMeta)
- Заглушка CMS в title (DefaultCmsTitle)
- Мало текста (NotEnoughTextOnPage)
- Кодировка не объявлена (CharsetNotDeclared)
- Кодировки не совпадают (CharsetMismatch)
- Текст-заглушка на латыни (PageHasLoremIpsum)
Разметка под соцсети
- Без Open Graph (OpenGraphTagsNotFound)
- Open Graph без картинки (OpenGraphTagsNotFilled)
- og:url не совпадает с canonical (OpenGraphUrlNotMatchToCanonical)
- Без карточки для X (TwitterCardMissing)
Аналитика
Дубли
- Дубль title, первая (TitleDoubles)
- Дубль title, вторая (TitleDoubles)
- Дубль description, первая (DescriptionDoubles)
- Дубль description, вторая (DescriptionDoubles)
- Дубль H1, первая (H1Doubles)
- Дубль H1, вторая (H1Doubles)
- Почти дубль, первая (NearDuplicateContent)
- Почти дубль, вторая (NearDuplicateContent)
- Дубль без canonical, первая (PageDoublesWithoutCanonicals)
- Дубль без canonical, вторая (PageDoublesWithoutCanonicals)
Локализация
- Без атрибута lang (LangNotExistsOrEmpty)
- Корректная языковая группа
- Корректная языковая группа (en)
- hreflang без атрибута lang (HreflangWithoutHtmlLang)
- hreflang без атрибута lang (en)
- Язык hreflang не совпадает с lang (LanguageInHreflangAndHtmlNotMatch)
- Язык hreflang не совпадает с lang (en)
- Битая ссылка в hreflang (BrokenHreflang)
- Битая ссылка в hreflang (en)
- Нет возвратной ссылки (HreflangWithoutReturnLink)
- Нет возвратной ссылки (en)
- Нет ссылки на саму себя (HreflangWithoutSelfReference)
- Нет ссылки на саму себя (en)
- Нет x-default (HreflangWithoutXDefault)
- Нет x-default (en)
- Неверный код в hreflang (HreflangInvalidCode)
- Неверный код в hreflang (en)
- hreflang на закрытую страницу (HreflangToNonIndexable)
- hreflang на закрытую страницу (en)
- Один язык дважды (HreflangDuplicateLanguage)
- Один язык дважды (en)
- Один язык дважды (en, вторая)
- hreflang вне head (HreflangOutsideHead)
- hreflang вне head (en)
Производительность
- Ответ дольше 1,8 секунды (SlowPages)
- Ответ дольше 800 мс (TtfbAboveTarget)
- Тяжёлая страница (TooHeavyPages)
- Без сжатия (NoCompression)
Изображения
- Битое изображение (PagesWithBrokenImages)
- Тяжёлое изображение
- Изображение без alt
- Изображение по http (HttpsPageLeadsToHttpImageOrFile)
- Изображение через редирект (PagesWithImagesWithRedirect)
- Изображение не в современном формате
- Изображение без width и height (ImageWithoutDimensions)
- Изображение без srcset (ImageWithoutSrcset)
- Первое изображение с lazy (FirstImageIsLazy)
- Изображения только в noscript (ImagesOnlyInNoscript)
JavaScript
- Битый JS (PagesWithBrokenJs)
- JS по http (HttpsPageLeadsToHttpJs)
- JS через редирект (PagesWithJsWithRedirect)
- Тяжёлый JS
CSS
Карта сайта
- noindex в карте сайта (SitemapUrlIsNoIndex)
- Адрес из карты не отвечает (SitemapContainsNotRespondingPage) —
/t/sitemap-dead/, ссылки нет намеренно - Неканоническая страница в карте (SitemapContainsNonCanonical)
- Страницы нет в карте (PageMissingFromSitemap)
- Закрытый в robots адрес в карте (SitemapUrlDisallowedInRobots) —
/private/in-sitemap/, ссылки нет намеренно
robots.txt
- Ссылка на закрытую в robots страницу
- Закрытая страница, на которую ссылаются —
/private/linked/, ссылки нет намеренно - Стили закрыты в robots (ResourceDisallowedInRobots)
Микроразметка
- Без микроразметки (NoStructuredData)
- JSON-LD не разбирается (BrokenJsonLd)
- Один тип в JSON-LD и в Microdata (StructuredDataMixedFormats)
- Товар с полной разметкой
- Product без image (ProductWithoutRequiredFields)
- Offer без price (ProductOfferWithoutPrice)
- aggregateRating без отзывов (RatingWithoutReviews)
- Product без рекомендуемых полей (ProductWithoutRecommendedFields)
- og:type не product (OpenGraphTypeNotProduct)
- Цена не числом (MarkupPriceNotNumber)
- Валюта не по ISO 4217 (MarkupCurrencyInvalid)
- Наличие не из перечня (MarkupAvailabilityInvalid)
- Рейтинг вне шкалы (MarkupRatingOutOfScale)
- Относительный адрес в разметке (MarkupRelativeUrl)
- Дата не по ISO 8601 (MarkupDateNotIso)
- Заголовок в разметке длиннее 110 (MarkupHeadlineTooLong)
- Article без headline (ArticleWithoutRequiredFields)
- Article без рекомендуемых полей (ArticleWithoutRecommendedFields)
- FAQPage без вопроса (FaqWithoutRequiredFields)
- Event без location (EventWithoutRequiredFields)
- Event без рекомендуемых полей (EventWithoutRecommendedFields)
- LocalBusiness без address (LocalBusinessWithoutRequiredFields)
- LocalBusiness без рекомендуемых полей (LocalBusinessWithoutRecommendedFields)
- Organization без name (OrganizationWithoutRequiredFields)
- Organization без рекомендуемых полей (OrganizationWithoutRecommendedFields)
- Recipe без image (RecipeWithoutRequiredFields)
- Recipe без рекомендуемых полей (RecipeWithoutRecommendedFields)
- VideoObject без uploadDate (VideoWithoutRequiredFields)
- VideoObject без рекомендуемых полей (VideoWithoutRecommendedFields)
- Длительность не по ISO 8601 (MarkupDurationNotIso)
- Сущность без свойств (EmptyStructuredDataEntity)
- Нет хлебных крошек (NoBreadcrumbs)
- Крошки нарисованы, но не размечены (BreadcrumbsNotMarkedUp)
- Звено крошек ведёт на несуществующий адрес (BreadcrumbLeadsToError)
- Звено крошек ведёт на редирект (BreadcrumbLeadsToRedirect)
- Две разметки крошек расходятся (BreadcrumbsDisagree)
Параметры URL
- Новости
- Пагинация с тем же title (PaginationTitleSameAsFirstPage)
- Пагинация с canonical на первую (PaginationCanonicalToFirstPage)
- Пагинация глубже сотой (DeepPagination)
- Параметр с тем же title (ParameterUrlDuplicatesBaseTitle)
- Рекламная метка в адресе (TrackingParametersInUrl)
Кеширование
- Нет ETag и Last-Modified (NoCacheValidators)
- HTML запрещён к кешированию (HtmlNotCacheable)
- Статика без max-age
- Сжатый ответ без Vary (CompressedWithoutVary)
- gzip вместо Brotli (CompressionNotBrotli)
Формат URL
- Заглавные буквы в адресе (UrlHasUppercase)
- Подчёркивание в адресе (UrlHasUnderscore)
- Пробел в адресе (UrlHasSpace)
- Кириллица в адресе (UrlNotAscii)
- Повторяющийся сегмент (UrlRepeatedSegment)
- Индексируемый внутренний поиск (InternalSearchUrl)
Безопасность
- Ресурс без протокола (ProtocolRelativeResource)
- Ресурс отдаётся как HTML
- Стили, отданные как HTML —
/assets/fake.css, ссылки нет намеренно - Нет HSTS (NoHsts)
- Нет X-Content-Type-Options (NoContentTypeOptions)
- Нет защиты от встраивания (NoFrameProtection)
- Нет Content-Security-Policy (NoContentSecurityPolicy)
- Нет Referrer-Policy (NoReferrerPolicy)
- Форма отправляется по http (FormActionInsecure)
- Форма на http-странице (FormOnHttpPage) —
/http/form/, ссылки нет намеренно
Служебные страницы
- Каталог —
/catalog/, ссылки нет намеренно - Только из меню (NoContentIncomingLinks) —
/t/menu-only/, ссылки нет намеренно - Политика конфиденциальности (NoIndexPage, WeightedPageNotIndexable) —
/privacy/, ссылки нет намеренно
Адреса без страниц
/gone/— 404, есть в карте сайта/error500/— 500, есть в карте сайта/r/…— редиректы, см. «Ссылки на редиректы»/private/…— закрыто в robots.txt