[{"data":1,"prerenderedAt":1198},["ShallowReactive",2],{"blog-post-ru-chto-vhodit-v-tehnicheskoe-seo":3,"blog-list-ru":1089},{"id":4,"title":5,"body":6,"category":1050,"cover":1051,"date":1052,"description":12,"excerpt":1053,"extension":1054,"faq":1055,"featured":1080,"meta":1081,"metaDescription":1082,"metaTitle":1083,"navigation":364,"path":1084,"readingMinutes":1085,"seo":1086,"slug":1087,"stem":1087,"updated":1052,"__hash__":1088},"blogRu/chto-vhodit-v-tehnicheskoe-seo.md","Что входит в техническое SEO: разбор глазами разработчика",{"type":7,"value":8,"toc":1027},"minimark",[9,13,16,21,24,27,32,35,38,41,45,53,56,60,63,168,172,179,189,195,208,211,215,218,221,224,265,268,277,281,298,304,447,450,456,460,463,486,493,500,504,515,518,521,524,528,531,538,541,547,551,554,557,571,575,578,584,707,734,741,745,748,890,904,918,922,925,929,935,941,947,957,961,967,973,979,983,986,989,992,1002,1006,1009,1012,1015,1023],[10,11,12],"p",{},"Техническое SEO ставит в тупик большинство владельцев сайтов. Контент вроде есть, ссылки есть, а в поиске сайт либо не виден, либо стоит намного ниже, чем должен. В большинстве случаев причина именно в техническом слое: бот не может нормально прочитать страницу, или читает её не ту версию, или страница грузится слишком долго по меркам мобайла.",[10,14,15],{},"Меня зовут Евгений Волков, я fullstack-разработчик, и техническое SEO для меня это не отдельная дисциплина, а часть каждого проекта. Когда строишь сайт на Nuxt или React с нуля, все эти настройки закладываешь сразу: правильный рендер, canonical, sitemap, JSON-LD. Когда приходишь на аудит готового сайта, задача другая: найти, что именно мешает поиску работать, и починить в порядке приоритета. В этом тексте я разберу, что входит в техническое SEO блок за блоком, и объясню, что из этого делает разработчик, а что лежит в зоне SEO-специалиста.",[17,18,20],"h2",{"id":19},"что-такое-техническое-seo-и-чем-оно-не-является","Что такое техническое SEO и чем оно не является",[10,22,23],{},"Коротко: техническое SEO обеспечивает, чтобы поисковый робот мог найти страницу, прочитать её содержимое и правильно понять, о чём она. Без этого фундамента всё остальное работает вхолостую.",[10,25,26],{},"Хорошая метафора: контент и ссылки это груз. Техническое SEO это дорога, по которой этот груз доставляется к поиску. Если дорога разбита, груз не доедет, или доедет не туда.",[28,29,31],"h3",{"id":30},"техническое-контентное-ссылочное-где-граница","Техническое, контентное, ссылочное: где граница",[10,33,34],{},"SEO принято делить на три ветки.",[10,36,37],{},"Контентное SEO отвечает на вопрос «что написано»: текст, ключевые слова, структура заголовков, внутренние ссылки, объём и польза материала. Ссылочное SEO про авторитет: сколько других сайтов ссылается на вас и насколько они сами весомы. Техническое SEO про устройство: как сайт отдаёт контент роботу, как он устроен в коде, насколько он быстр.",[10,39,40],{},"Граница часто размыта. Canonical это технический тег, но он решает, за каким URL закрепляется вес ссылок. Заголовок H1 контентный элемент, но его правильный рендер на стороне сервера это уже техника. На практике я не делаю жёсткого разделения: смотрю на задачу, а не на её категорию.",[28,42,44],{"id":43},"почему-без-технической-базы-контент-и-ссылки-работают-вхолостую","Почему без технической базы контент и ссылки работают вхолостую",[10,46,47,48,52],{},"Представьте: вы написали отличную статью, получили несколько обратных ссылок, но страница закрыта в robots.txt или отдаёт ",[49,50,51],"code",{},"noindex",". Поисковик её попросту игнорирует. Или рендер сайта сделан на чистом SPA без SSR: бот приходит, видит пустой HTML-каркас и не может прочитать ни слова контента. Или canonical страницы ведёт на другой URL. Вы сами сливаете вес в другое место.",[10,54,55],{},"Технические проблемы бывают двух видов. Одни полностью блокируют индексацию: это критические дефекты, исправляются первыми. Другие снижают потенциал без полного блока: медленный LCP, отсутствие structured data, неоптимальные URL. С ними тоже надо работать, просто в следующую очередь.",[17,57,59],{"id":58},"что-входит-в-технический-аудит-8-блоков","Что входит в технический аудит: 8 блоков",[10,61,62],{},"Структурирую технический SEO-аудит по восьми блокам. Ниже таблица-чеклист, потом разберу каждый.",[64,65,66,82],"table",{},[67,68,69],"thead",{},[70,71,72,76,79],"tr",{},[73,74,75],"th",{},"Блок",[73,77,78],{},"Что проверяем",[73,80,81],{},"Кто чинит",[83,84,85,97,108,118,128,138,148,158],"tbody",{},[70,86,87,91,94],{},[88,89,90],"td",{},"1. Краулинг и индексация",[88,92,93],{},"robots.txt, sitemap.xml, noindex, crawl budget",[88,95,96],{},"Разработчик + SEO",[70,98,99,102,105],{},[88,100,101],{},"2. JavaScript-рендеринг",[88,103,104],{},"SSR vs SPA, отрендеренный HTML, видимость контента",[88,106,107],{},"Разработчик",[70,109,110,113,116],{},[88,111,112],{},"3. Дубли и canonical",[88,114,115],{},"canonical-теги, параметры URL, www vs apex",[88,117,96],{},[70,119,120,123,126],{},[88,121,122],{},"4. Скорость и Core Web Vitals",[88,124,125],{},"LCP, INP, CLS, TTFB, PageSpeed score",[88,127,107],{},[70,129,130,133,136],{},[88,131,132],{},"5. Структура URL",[88,134,135],{},"ЧПУ, 301-редиректы, цепочки, глубина вложенности",[88,137,96],{},[70,139,140,143,146],{},[88,141,142],{},"6. Мобайл / mobile-first",[88,144,145],{},"viewport, mobile UX, адаптив, mobile-friendly тест",[88,147,107],{},[70,149,150,153,156],{},[88,151,152],{},"7. HTTPS и безопасность",[88,154,155],{},"сертификат, mixed content, заголовки безопасности",[88,157,107],{},[70,159,160,163,166],{},[88,161,162],{},"8. Микроразметка Schema.org",[88,164,165],{},"JSON-LD, типы, валидация, FAQPage, BreadcrumbList",[88,167,96],{},[28,169,171],{"id":170},"_1-краулинг-и-индексация-robotstxt-sitemapxml-noindex","1. Краулинг и индексация: robots.txt, sitemap.xml, noindex",[10,173,174,175,178],{},"Первое, что проверяю на любом сайте: открыт ли он вообще для поиска. Звучит банально, но ",[49,176,177],{},"Disallow: /"," в robots.txt это самая разрушительная ошибка из всех. Она обнуляет всё. На стейджинге сайт часто закрывают намеренно, а потом запускают в прод, забыв убрать это правило.",[180,181,186],"pre",{"className":182,"code":184,"language":185},[183],"language-text","# Правильный robots.txt: открываем всё, закрываем только служебное\nUser-agent: *\nAllow: /\nDisallow: /admin/\nDisallow: /api/\n\n# Скармливаем боту карту сайта явно\nSitemap: https://evolkov.tech/sitemap.xml\n","text",[49,187,184],{"__ignoreMap":188},"",[10,190,191,192,194],{},"Sitemap.xml должен содержать только индексируемые страницы, без ",[49,193,51],{},"-мусора. Динамику (посты блога, карточки товаров) добавляем через серверный источник. После публикации карту нужно явно передать в Google Search Console и Яндекс.Вебмастер.",[10,196,197,199,200,203,204,207],{},[49,198,51],{}," на конкретной странице ставится через мета-тег ",[49,201,202],{},"robots"," в ",[49,205,206],{},"\u003Chead>",". Для юридических и служебных страниц это правильно. Для коммерческих посадочных или статей блога это катастрофа.",[10,209,210],{},"Crawl budget важен для больших сайтов: если у вас тысячи страниц, бот не будет обходить все из них на каждом визите. Помогает чистый sitemap, правильная перелинковка и закрытие от краулинга бесполезных параметров (UTM, фильтры сортировки).",[28,212,214],{"id":213},"_2-javascript-рендеринг-почему-spa-невидим-для-бота-и-как-ssr-это-решает","2. JavaScript-рендеринг: почему SPA невидим для бота и как SSR это решает",[10,216,217],{},"Это самая критичная техническая проблема для современных фронтендов. Чистый SPA (Vue, React без SSR) отдаёт боту пустой HTML-каркас. Весь контент появляется позже, когда браузер выполнит JavaScript. Бот либо видит пустоту, либо ждёт. Медленно и ненадёжно.",[10,219,220],{},"SSR (рендер на сервере) или prerender (рендер на сборке) решают это в корне: бот получает готовый HTML с текстом, заголовками и метатегами прямо на первом запросе.",[10,222,223],{},"Проверить это просто:",[180,225,229],{"className":226,"code":227,"language":228,"meta":188,"style":188},"language-bash shiki shiki-themes github-light github-dark","# Смотрим сырой HTML без выполнения JS\ncurl -s https://example.com | grep '\u003Ch1'\n","bash",[49,230,231,240],{"__ignoreMap":188},[232,233,236],"span",{"class":234,"line":235},"line",1,[232,237,239],{"class":238},"sJ8bj","# Смотрим сырой HTML без выполнения JS\n",[232,241,243,247,251,255,259,262],{"class":234,"line":242},2,[232,244,246],{"class":245},"sScJk","curl",[232,248,250],{"class":249},"sj4cs"," -s",[232,252,254],{"class":253},"sZZnC"," https://example.com",[232,256,258],{"class":257},"szBVR"," |",[232,260,261],{"class":245}," grep",[232,263,264],{"class":253}," '\u003Ch1'\n",[10,266,267],{},"Если команда возвращает ваш заголовок: рендер работает. Если пусто, сайт виден боту как пустая страница.",[10,269,270,271,276],{},"На сайтах на Nuxt с SSR этой проблемы нет. На кастомных React-SPA без Next.js она возникает практически всегда. Про настройку рендера конкретно под Nuxt я написал подробно в разборе ",[272,273,275],"a",{"href":274},"/blog/seo-dlya-nuxt","SEO для Nuxt: индексация, sitemap и метатеги",".",[28,278,280],{"id":279},"_3-дубли-и-canonical-откуда-берутся-и-как-не-наплодить","3. Дубли и canonical: откуда берутся и как не наплодить",[10,282,283,284,287,288,287,291,287,294,297],{},"Дубли возникают незаметно. Один и тот же контент доступен по нескольким адресам: ",[49,285,286],{},"example.com",", ",[49,289,290],{},"www.example.com",[49,292,293],{},"example.com/",[49,295,296],{},"example.com/index.html",". Поисковик не понимает, какой из них главный, вес размазывается между ними.",[10,299,300,301,303],{},"Canonical-тег говорит поиску: «эта страница: единственный правильный адрес этого контента». Проставляется в ",[49,302,206],{}," каждой страницы.",[180,305,309],{"className":306,"code":307,"language":308,"meta":188,"style":188},"language-vue shiki shiki-themes github-light github-dark","\u003C!-- В Nuxt: canonical через useSeoMeta или useHead -->\n\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\n\nuseHead({\n  link: [\n    {\n      rel: 'canonical',\n      href: `https://evolkov.tech${route.path}`\n    }\n  ]\n})\n\u003C/script>\n","vue",[49,310,311,316,341,359,366,375,381,387,399,419,425,431,437],{"__ignoreMap":188},[232,312,313],{"class":234,"line":235},[232,314,315],{"class":238},"\u003C!-- В Nuxt: canonical через useSeoMeta или useHead -->\n",[232,317,318,322,326,329,332,335,338],{"class":234,"line":242},[232,319,321],{"class":320},"sVt8B","\u003C",[232,323,325],{"class":324},"s9eBZ","script",[232,327,328],{"class":245}," setup",[232,330,331],{"class":245}," lang",[232,333,334],{"class":320},"=",[232,336,337],{"class":253},"\"ts\"",[232,339,340],{"class":320},">\n",[232,342,344,347,350,353,356],{"class":234,"line":343},3,[232,345,346],{"class":257},"const",[232,348,349],{"class":249}," route",[232,351,352],{"class":257}," =",[232,354,355],{"class":245}," useRoute",[232,357,358],{"class":320},"()\n",[232,360,362],{"class":234,"line":361},4,[232,363,365],{"emptyLinePlaceholder":364},true,"\n",[232,367,369,372],{"class":234,"line":368},5,[232,370,371],{"class":245},"useHead",[232,373,374],{"class":320},"({\n",[232,376,378],{"class":234,"line":377},6,[232,379,380],{"class":320},"  link: [\n",[232,382,384],{"class":234,"line":383},7,[232,385,386],{"class":320},"    {\n",[232,388,390,393,396],{"class":234,"line":389},8,[232,391,392],{"class":320},"      rel: ",[232,394,395],{"class":253},"'canonical'",[232,397,398],{"class":320},",\n",[232,400,402,405,408,411,413,416],{"class":234,"line":401},9,[232,403,404],{"class":320},"      href: ",[232,406,407],{"class":253},"`https://evolkov.tech${",[232,409,410],{"class":320},"route",[232,412,276],{"class":253},[232,414,415],{"class":320},"path",[232,417,418],{"class":253},"}`\n",[232,420,422],{"class":234,"line":421},10,[232,423,424],{"class":320},"    }\n",[232,426,428],{"class":234,"line":427},11,[232,429,430],{"class":320},"  ]\n",[232,432,434],{"class":234,"line":433},12,[232,435,436],{"class":320},"})\n",[232,438,440,443,445],{"class":234,"line":439},13,[232,441,442],{"class":320},"\u003C/",[232,444,325],{"class":324},[232,446,340],{"class":320},[10,448,449],{},"Три правила, которые нельзя нарушать. Canonical должен быть абсолютным URL с протоколом и доменом. Он должен совпадать с URL в sitemap и во внутренних ссылках. На нормальной уникальной странице он ссылается сам на себя.",[10,451,452,453,455],{},"Параметры URL (UTM, фильтры, сортировка) часто создают технические дубли. Для фильтров и пагинации проблему решают либо ",[49,454,51],{}," на отфильтрованные страницы, либо canonical, указывающий на базовую страницу без параметров.",[28,457,459],{"id":458},"_4-скорость-и-core-web-vitals-lcp-inp-cls","4. Скорость и Core Web Vitals: LCP, INP, CLS",[10,461,462],{},"С 2021 года Google официально учитывает Core Web Vitals как сигнал ранжирования. Три метрики:",[464,465,466,474,480],"ul",{},[467,468,469,473],"li",{},[470,471,472],"strong",{},"LCP (Largest Contentful Paint):"," за какое время появляется самый крупный элемент первого экрана. Цель: менее 2,5 секунды.",[467,475,476,479],{},[470,477,478],{},"INP (Interaction to Next Paint):"," отзывчивость на клики и ввод. Пришёл на замену FID в 2024. Цель: менее 200 мс.",[467,481,482,485],{},[470,483,484],{},"CLS (Cumulative Layout Shift):"," насколько вёрстка прыгает во время загрузки. Цель: менее 0,1.",[10,487,488,489,492],{},"Что убивает LCP чаще всего: неоптимизированные изображения (JPG вместо WebP, без явных размеров), тяжёлый рендер-блокирующий CSS, медленный TTFB сервера. Что убивает CLS: картинки и iframe без указанных ширины и высоты, шрифты без ",[49,490,491],{},"font-display: swap",", динамически вставляемые баннеры.",[10,494,495,496,276],{},"На проектах на Nuxt я замечал: 3D-герой в первом экране одним своим весом обваливает LCP на мобайле. Оптимизация ассетов и отложенная загрузка Three.js дают быстрый выигрыш. Весь процесс ускорения, бандл, изображения, DevTools, я разобрал отдельно в ",[272,497,499],{"href":498},"/blog/kak-uskorit-sajt","гайде по ускорению сайта",[28,501,503],{"id":502},"_5-структура-url-чпу-301-редиректы-цепочки","5. Структура URL: ЧПУ, 301-редиректы, цепочки",[10,505,506,507,510,511,514],{},"Человекопонятные URL (ЧПУ, slug) помогают и пользователям, и поиску. ",[49,508,509],{},"/blog/chto-vhodit-v-tehnicheskoe-seo"," лучше, чем ",[49,512,513],{},"/blog?id=4821&cat=7",". Ключевое слово в slug: дополнительный сигнал о теме страницы.",[10,516,517],{},"301-редирект сообщает поиску, что страница переехала навсегда. Вес (PageRank) частично передаётся на новый адрес. 302 означает временный переезд и вес не передаёт. Это частая ошибка при смене URL.",[10,519,520],{},"Цепочки редиректов это медленно и плохо: A → B → C вместо прямого A → C. Каждое лишнее звено замедляет краулинг и тратит бюджет обхода. Проверяется краулером (Screaming Frog) или в ответах сервера.",[10,522,523],{},"Глубина вложенности желательно не более 3–4 уровней от главной. Страница, до которой надо кликнуть 8 раз, краулится реже.",[28,525,527],{"id":526},"_6-мобайл-и-mobile-first-индексация","6. Мобайл и mobile-first индексация",[10,529,530],{},"Google с 2019 года переключился на mobile-first индексацию: он ранжирует именно мобильную версию сайта, а не десктопную. Если мобильная версия отличается от десктопной (спрятан контент, другие метатеги, нет части ссылок), Google ранжирует по худшей.",[10,532,533,534,537],{},"Viewport мета-тег обязателен: ",[49,535,536],{},"\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",". Без него Google считает сайт не адаптированным.",[10,539,540],{},"Проверяется в Google Search Console (отчёт «Удобство для мобильных устройств») и через инструмент Mobile-Friendly Test. На практике современные фреймворки (Nuxt, Next.js) с Tailwind или аналогом делают адаптив по умолчанию, но стоит проверить отдельно для сложных компонентов: таблиц, карт, тяжёлых форм.",[10,542,543,544,546],{},"Отдельный момент: шрифты. Если подключаете веб-шрифты через Google Fonts, на мобайле с медленным соединением они блокируют первый рендер. Самохостинг шрифтов с ",[49,545,491],{}," даёт заметный прирост по LCP и убирает мигание текста при загрузке (FOUT). Мелочь, но в совокупности с другими оптимизациями это складывается в реальный прирост по Core Web Vitals.",[28,548,550],{"id":549},"_7-https-и-безопасность-mixed-content-заголовки","7. HTTPS и безопасность: mixed content, заголовки",[10,552,553],{},"HTTPS: базовый сигнал доверия. Сайт без сертификата получает предупреждение в браузере и проигрывает в ранжировании. В 2026 году ситуация с этим простая: Let's Encrypt + Caddy или nginx настраиваются за час.",[10,555,556],{},"Mixed content: когда HTTPS-сайт подгружает ресурсы по HTTP (картинки, скрипты, шрифты). Браузер блокирует такие ресурсы, страница отображается некорректно, в консоли DevTools появляются предупреждения. Лечится заменой http:// на https:// в src всех ресурсов.",[10,558,559,560,563,564,287,567,570],{},"Заголовки безопасности (HTTP Security Headers) влияют на доверие и отчасти на поведенческие сигналы: ",[49,561,562],{},"Strict-Transport-Security"," (HSTS), ",[49,565,566],{},"X-Content-Type-Options",[49,568,569],{},"X-Frame-Options",". Добавляются на уровне сервера (Caddy, nginx) без изменений в коде приложения.",[28,572,574],{"id":573},"_8-микроразметка-schemaorg-что-добавлять-и-зачем","8. Микроразметка Schema.org: что добавлять и зачем",[10,576,577],{},"Structured data объясняет поиску, что за сущность на странице: статья, товар, организация, часто задаваемые вопросы. Она не поднимает позиции напрямую, но даёт расширенные сниппеты: дату, автора, хлебные крошки, блок FAQ прямо в выдаче. Расширенный сниппет = выше кликабельность.",[10,579,580,581,583],{},"Подключается через JSON-LD в ",[49,582,206],{}," страницы. Вот пример для блог-поста:",[180,585,589],{"className":586,"code":587,"language":588,"meta":188,"style":188},"language-json shiki shiki-themes github-light github-dark","{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Что входит в техническое SEO\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Евгений Волков\",\n    \"url\": \"https://evolkov.tech/cv\"\n  },\n  \"datePublished\": \"2026-07-26\",\n  \"dateModified\": \"2026-07-26\"\n}\n","json",[49,590,591,596,609,621,633,641,653,665,675,680,692,702],{"__ignoreMap":188},[232,592,593],{"class":234,"line":235},[232,594,595],{"class":320},"{\n",[232,597,598,601,604,607],{"class":234,"line":242},[232,599,600],{"class":249},"  \"@context\"",[232,602,603],{"class":320},": ",[232,605,606],{"class":253},"\"https://schema.org\"",[232,608,398],{"class":320},[232,610,611,614,616,619],{"class":234,"line":343},[232,612,613],{"class":249},"  \"@type\"",[232,615,603],{"class":320},[232,617,618],{"class":253},"\"Article\"",[232,620,398],{"class":320},[232,622,623,626,628,631],{"class":234,"line":361},[232,624,625],{"class":249},"  \"headline\"",[232,627,603],{"class":320},[232,629,630],{"class":253},"\"Что входит в техническое SEO\"",[232,632,398],{"class":320},[232,634,635,638],{"class":234,"line":368},[232,636,637],{"class":249},"  \"author\"",[232,639,640],{"class":320},": {\n",[232,642,643,646,648,651],{"class":234,"line":377},[232,644,645],{"class":249},"    \"@type\"",[232,647,603],{"class":320},[232,649,650],{"class":253},"\"Person\"",[232,652,398],{"class":320},[232,654,655,658,660,663],{"class":234,"line":383},[232,656,657],{"class":249},"    \"name\"",[232,659,603],{"class":320},[232,661,662],{"class":253},"\"Евгений Волков\"",[232,664,398],{"class":320},[232,666,667,670,672],{"class":234,"line":389},[232,668,669],{"class":249},"    \"url\"",[232,671,603],{"class":320},[232,673,674],{"class":253},"\"https://evolkov.tech/cv\"\n",[232,676,677],{"class":234,"line":401},[232,678,679],{"class":320},"  },\n",[232,681,682,685,687,690],{"class":234,"line":421},[232,683,684],{"class":249},"  \"datePublished\"",[232,686,603],{"class":320},[232,688,689],{"class":253},"\"2026-07-26\"",[232,691,398],{"class":320},[232,693,694,697,699],{"class":234,"line":427},[232,695,696],{"class":249},"  \"dateModified\"",[232,698,603],{"class":320},[232,700,701],{"class":253},"\"2026-07-26\"\n",[232,703,704],{"class":234,"line":433},[232,705,706],{"class":320},"}\n",[10,708,709,710,713,714,717,718,721,722,725,726,729,730,733],{},"Что размечать в первую очередь: ",[49,711,712],{},"Person"," или ",[49,715,716],{},"Organization"," для всего сайта (питает knowledge graph), ",[49,719,720],{},"Article"," на статьях с датами и автором, ",[49,723,724],{},"BreadcrumbList"," для крошек (часто попадают прямо в сниппет), ",[49,727,728],{},"FAQPage"," если на странице есть реальный FAQ, ",[49,731,732],{},"Service"," на коммерческих посадочных с ценой.",[10,735,736,737,740],{},"Главное правило: не размечай то, чего нет на странице. Фейковый ",[49,738,739],{},"aggregateRating"," со звёздами, которых нет в реальности, Google карает удалением расширенных сниппетов.",[17,742,744],{"id":743},"что-из-этого-чинит-разработчик-а-что-seo-специалист","Что из этого чинит разработчик, а что SEO-специалист",[10,746,747],{},"Это самый практичный раздел. Многие SEO-задачи технически решаются только в коде. Понимание границ экономит время и деньги.",[64,749,750,763],{},[67,751,752],{},[70,753,754,757,760],{},[73,755,756],{},"Задача",[73,758,759],{},"Исполнитель",[73,761,762],{},"Почему",[83,764,765,775,785,797,807,817,828,838,848,859,870,880],{},[70,766,767,770,772],{},[88,768,769],{},"SSR вместо SPA, настройка рендера",[88,771,107],{},[88,773,774],{},"Это архитектурное решение на уровне фреймворка",[70,776,777,780,782],{},[88,778,779],{},"Canonical в шаблоне страницы",[88,781,107],{},[88,783,784],{},"Нужен доступ к коду компонента",[70,786,787,790,792],{},[88,788,789],{},"JSON-LD Schema.org",[88,791,107],{},[88,793,794,795],{},"Вставляется программно в ",[49,796,206],{},[70,798,799,802,804],{},[88,800,801],{},"Исправление цепочек редиректов",[88,803,107],{},[88,805,806],{},"Правится в конфиге сервера или middleware",[70,808,809,812,814],{},[88,810,811],{},"Оптимизация LCP, CLS, INP",[88,813,107],{},[88,815,816],{},"Код, ассеты, CSS, lazy loading",[70,818,819,822,825],{},[88,820,821],{},"robots.txt и директивы noindex",[88,823,824],{},"Оба",[88,826,827],{},"Часто настраивается через CMS или конфиг",[70,829,830,833,835],{},[88,831,832],{},"sitemap.xml",[88,834,824],{},[88,836,837],{},"Генерируется автоматически модулем или плагином",[70,839,840,843,845],{},[88,841,842],{},"Структура URL и слаги",[88,844,824],{},[88,846,847],{},"SEO выбирает слаги, разработчик реализует роутинг",[70,849,850,853,856],{},[88,851,852],{},"Мета-теги title и description",[88,854,855],{},"SEO + правки разработчика",[88,857,858],{},"SEO пишет тексты, разработчик подключает поле в CMS",[70,860,861,864,867],{},[88,862,863],{},"Выбор ключевых слов и анализ конкурентов",[88,865,866],{},"SEO-специалист",[88,868,869],{},"Это стратегия, не код",[70,871,872,875,877],{},[88,873,874],{},"Построение структуры ссылок",[88,876,866],{},[88,878,879],{},"Анализ и стратегия, реализация через CMS",[70,881,882,885,887],{},[88,883,884],{},"Контентный аудит страниц",[88,886,866],{},[88,888,889],{},"Экспертиза в оценке качества контента",[891,892,893],"pros",{},[464,894,895,898,901],{},[467,896,897],{},"Правильный рендер (SSR/prerender) закрывает самую критичную техническую проблему разом: бот видит готовый HTML с первого запроса.",[467,899,900],{},"JSON-LD в коде не зависит от CMS и не сбивается при обновлениях платформы.",[467,902,903],{},"Canonical и robots.txt настраиваются один раз и работают для всего сайта автоматически.",[905,906,907],"cons",{},[464,908,909,912,915],{},[467,910,911],{},"Никакой код не заменит стратегию: выбор ключей, анализ конкурентов, построение семантического ядра. Это работа SEO-специалиста, и её нельзя «запрограммировать».",[467,913,914],{},"Технически идеальный сайт без хорошего контента и внешних ссылок не попадёт в топ по конкурентным запросам.",[467,916,917],{},"Некоторые CMS (особенно старые) технически ограничивают то, что можно сделать без доступа к серверу или базе данных.",[17,919,921],{"id":920},"инструменты-технического-аудита","Инструменты технического аудита",[10,923,924],{},"Инструменты можно разделить на бесплатные и платные. На бесплатных можно провести полноценный аудит небольшого сайта.",[28,926,928],{"id":927},"бесплатные-инструменты","Бесплатные инструменты",[10,930,931,934],{},[470,932,933],{},"Google Search Console:"," главный инструмент. Показывает, что Google думает о вашем сайте: какие страницы проиндексированы, какие исключены и почему, есть ли ошибки краулинга. Кнопка «Просмотреть как Google» позволяет увидеть отрендеренный HTML глазами бота. Это незаменимо для диагностики SPA-проблем.",[10,936,937,940],{},[470,938,939],{},"Яндекс.Вебмастер:"," то же самое для Яндекса. Показывает статус индексации, ошибки, скорость загрузки, поисковые запросы. Обязателен для рунета.",[10,942,943,946],{},[470,944,945],{},"PageSpeed Insights:"," замеряет Core Web Vitals как на полевых данных (реальные пользователи Chrome), так и в лабораторных условиях. Даёт конкретные рекомендации по каждой метрике.",[10,948,949,952,953,276],{},[470,950,951],{},"Chrome DevTools:"," для глубокой диагностики скорости: вкладка Performance показывает, что именно тормозит. Network показывает, что и когда грузится, Lighthouse запускается прямо из браузера. Про работу с DevTools для диагностики скорости я детально разобрал в посте ",[272,954,956],{"href":955},"/blog/kak-proverit-skorost-sajta","как проверить скорость сайта",[28,958,960],{"id":959},"платные-и-специализированные-инструменты","Платные и специализированные инструменты",[10,962,963,966],{},[470,964,965],{},"Screaming Frog SEO Spider:"," краулер, который обходит весь сайт и собирает полный список URL, кодов ответа, заголовков, мета-тегов, дублей, редиректов. Бесплатный план до 500 URL, платный снимает ограничение. Для любого аудита крупнее визитки незаменим.",[10,968,969,972],{},[470,970,971],{},"Ahrefs Site Audit:"," облачный краулер с подробными отчётами по техническим проблемам. Удобен тем, что не нужно запускать ничего локально и отчёты автоматизируются. Из минусов: у Ahrefs нет данных по Яндексу и российскому трафику, для рунета это ограничение.",[10,974,975,978],{},[470,976,977],{},"pr-cy.ru:"," российский инструмент SEO-аудита. Умеет проверять мобильную версию, скорость, мета-теги, robots, sitemap, дубли. Удобен тем, что понимает специфику Яндекса и показывает рекомендации с учётом рунета.",[17,980,982],{"id":981},"как-это-связано-с-разработкой-на-современных-фреймворках","Как это связано с разработкой на современных фреймворках",[10,984,985],{},"Nuxt, Next.js и другие SSR-фреймворки закрывают большую часть технического SEO по умолчанию. Это не значит, что всё настроено правильно из коробки: нужно явно прописать canonical, отдать корректный sitemap, добавить JSON-LD, настроить robots. Но архитектурная основа правильная: рендер на сервере уже правильная.",[10,987,988],{},"Проблемы начинаются, когда фреймворк используется как SPA-обёртка без SSR, когда canonical генерируется с www вместо apex-домена, когда в sitemap попадают noindex-страницы или служебные маршруты. Это не ошибки фреймворка, это ошибки конфигурации.",[10,990,991],{},"На моей практике больше всего технических SEO-проблем я нахожу именно там: sitemap c неправильным доменом, canonical, указывающий на локалхост (баг с .env в проде), цепочки редиректов после переезда, JSON-LD с пустыми полями. Ничего из этого не лечится контентом или ссылками. Только правкой кода или конфига.",[10,993,994,995,998,999,276],{},"Про конкретные настройки для Nuxt, включая useSeoMeta, hreflang и routeRules, я подробно написал в ",[272,996,997],{"href":274},"разборе SEO для Nuxt",". Про оптимизацию производительности и Core Web Vitals на уровне бандла и ассетов: смотри пост ",[272,1000,1001],{"href":498},"как ускорить сайт",[17,1003,1005],{"id":1004},"что-дальше","Что дальше",[10,1007,1008],{},"Технический аудит это не разовая процедура, а регулярная гигиена. После запуска, после редизайна, после смены хостинга, после добавления крупного нового раздела. Каждый раз проверяешь, что роботы по-прежнему видят то, что нужно, и не видят того, что не нужно.",[10,1010,1011],{},"Начинать всегда стоит с быстрого осмотра: robots.txt открыт, GSC не показывает критических ошибок, sitemap отправлена, отрендеренный HTML содержит реальный контент. Это занимает 20 минут и закрывает самые грубые проблемы. Дальше идёт полноценный аудит по всем восьми блокам: краулинг, рендер, дубли, скорость, URL, мобайл, безопасность, разметка. Приоритет расставляется по принципу «сначала то, что вообще блокирует индексацию, потом то, что снижает потенциал».",[10,1013,1014],{},"На сайтах, которые я строю с нуля на Nuxt или React, техническая основа закладывается сразу: правильный рендер, canonical, sitemap, JSON-LD, robots. Это дешевле, чем чинить потом. На готовых сайтах прохожу аудитом и работаю по той же последовательности: сначала диагностика, потом правки с чёткими приоритетами.",[10,1016,1017,1018,1022],{},"Если вы хотите понять, что именно мешает вашему сайту в поиске прямо сейчас, это входит в мою услугу ",[272,1019,1021],{"href":1020},"/uslugi/tehnicheskoe-seo","технического SEO",". Начинаем с аудита: Google Search Console, Яндекс.Вебмастер, отрендеренный HTML, sitemap, canonical, скорость. Дальше чиним по приоритету. Стартует от 10 000 ₽, точная вилка после просмотра проекта.",[1024,1025,1026],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":188,"searchDepth":242,"depth":242,"links":1028},[1029,1033,1043,1044,1048,1049],{"id":19,"depth":242,"text":20,"children":1030},[1031,1032],{"id":30,"depth":343,"text":31},{"id":43,"depth":343,"text":44},{"id":58,"depth":242,"text":59,"children":1034},[1035,1036,1037,1038,1039,1040,1041,1042],{"id":170,"depth":343,"text":171},{"id":213,"depth":343,"text":214},{"id":279,"depth":343,"text":280},{"id":458,"depth":343,"text":459},{"id":502,"depth":343,"text":503},{"id":526,"depth":343,"text":527},{"id":549,"depth":343,"text":550},{"id":573,"depth":343,"text":574},{"id":743,"depth":242,"text":744},{"id":920,"depth":242,"text":921,"children":1045},[1046,1047],{"id":927,"depth":343,"text":928},{"id":959,"depth":343,"text":960},{"id":981,"depth":242,"text":982},{"id":1004,"depth":242,"text":1005},"seo","/images/blog/chto-vhodit-v-tehnicheskoe-seo.webp","2026-07-26",null,"md",[1056,1059,1062,1065,1068,1071,1074,1077],{"q":1057,"a":1058},"Что такое техническое SEO?","Техническое SEO: набор работ, которые делают сайт понятным для поисковых роботов. Правильная индексация, корректные мета-теги, быстрая загрузка, отсутствие дублей, структурированная разметка. Это фундамент, без которого хороший контент и внешние ссылки работают вхолостую. Бот должен сначала найти страницу, прочитать её и понять, о чём она, а уже потом алгоритм решает, куда её ставить в выдаче.",{"q":1060,"a":1061},"Чем техническое SEO отличается от контентного?","Контентное SEO про то, что написано на странице: текст, ключевые слова, структура заголовков, внутренние ссылки. Техническое про то, как сайт устроен изнутри: рендер, индексация, скорость, дубли, разметка. Контент без технической базы либо вообще не индексируется, либо индексируется хуже, чем мог бы. Идеальная статья на сайте с закрытым robots.txt так и останется невидимой для поиска.",{"q":1063,"a":1064},"Кто такой технический SEO-специалист?","Технический SEO-специалист анализирует сайт инструментами (Screaming Frog, GSC, PageSpeed), находит проблемы с индексацией, дублями, скоростью, разметкой и даёт рекомендации по их устранению. Часть проблем он может исправить сам: мета-теги через CMS, robots.txt, redirect-правила. Часть требует разработчика: изменить рендер, переделать структуру URL, добавить JSON-LD в код. Граница между ними зависит от доступа к коду.",{"q":1066,"a":1067},"Нужен ли разработчик для технического SEO или достаточно SEO-специалиста?","Зависит от проблемы. Многое в техническом SEO требует именно кода: SSR-рендер вместо SPA, правильный canonical в компоненте, JSON-LD в шаблоне, исправление цепочек редиректов, оптимизация критического CSS. Это не делается через интерфейс CMS. SEO-специалист ставит диагноз и формулирует задачу, разработчик реализует. Для небольшого сайта на CMS (WordPress, Tilda) иногда хватает SEO-специалиста с доступом к плагинам. Для кастомного фронтенда на React или Nuxt без разработчика не обойтись.",{"q":1069,"a":1070},"С чего начать технический аудит сайта?","Начинать лучше с самого очевидного: открыть robots.txt и убедиться, что сайт вообще не закрыт от индексации. Потом проверить Google Search Console: есть ли ошибки краулинга, исключённые страницы, предупреждения. Дальше отрендеренный HTML (кнопка «Просмотреть как Google» в GSC): видит ли бот контент или пустой каркас. После этого sitemap, canonical, дубли. Screaming Frog хорошо покрывает весь сайт краулом за один прогон.",{"q":1072,"a":1073},"Сколько стоит технический SEO-аудит?","У меня техническое SEO стартует от 10 000 ₽. Начинается всегда с аудита: смотрю GSC и Я.Вебмастер, отрендеренный HTML, sitemap, canonical, метатеги, разметку и скорость на реальных данных. Дальше чиним по приоритету: сначала то, что вообще закрывает страницы от поиска, потом скорость и structured data. Точную вилку называю после того, как вижу проект, потому что сайт на 10 страниц и платформа на 1000+ это разный объём. Подробнее об услуге на странице технического SEO.",{"q":1075,"a":1076},"Как часто нужно проводить технический аудит?","Раз в 6–12 месяцев как плановый осмотр, и обязательно после каждого крупного обновления сайта: смена CMS, редизайн, переезд на новый домен, добавление нового раздела. После переезда аудит критически важен: цепочки редиректов, потерянные canonical, исчезнувшие страницы из sitemap. Небольшие сайты на стабильном стеке можно проверять реже, крупные контентные платформы чаще, особенно если добавляется много новых страниц.",{"q":1078,"a":1079},"Влияет ли скорость сайта на позиции в поиске?","Да, и довольно прямо. Google с 2021 года использует Core Web Vitals (LCP, INP, CLS) как фактор ранжирования в мобильной выдаче. Яндекс официально скорость в факторы не выносит, но поведенческие сигналы (люди уходят с медленного сайта) он точно учитывает. На практике медленный сайт проигрывает быстрому при прочих равных. Особенно критично для мобайла: более половины трафика с телефонов, и если LCP больше 4 секунд, пользователи просто закрывают вкладку.",false,{},"Техническое SEO: что это, что входит в аудит и что из этого чинит разработчик. Чеклист 8 блоков, таблица задач и инструменты от Евгения Волкова.","Техническое SEO: что это и что входит — Евгений Волков","/chto-vhodit-v-tehnicheskoe-seo",14,{"title":5,"description":12},"chto-vhodit-v-tehnicheskoe-seo","XA8nUdiv8UDHSAmetpGaqyeTwet7zXrQU-8tAAWS-VU",[1090,1096,1102,1103,1108,1113,1118,1122,1126,1130,1134,1138,1142,1146,1150,1154,1158,1163,1169,1173,1178,1184,1189,1194],{"slug":1091,"title":1092,"excerpt":1053,"category":1093,"cover":1094,"date":1052,"updated":1052,"readingMinutes":1095,"featured":1080},"3d-konfigurator-tovara-dlya-sajta","3D-конфигуратор товара для сайта: как устроен, сколько стоит и когда окупается","frontend","/images/blog/3d-konfigurator-tovara-dlya-sajta.webp",17,{"slug":1097,"title":1098,"excerpt":1053,"category":1099,"cover":1100,"date":1052,"updated":1052,"readingMinutes":1101,"featured":1080},"avtomatizaciya-tenderov-na-zakaz","Автоматизация тендеров: когда агрегатора мало и нужна своя система","backend","/images/blog/avtomatizaciya-tenderov-na-zakaz.webp",18,{"slug":1087,"title":5,"excerpt":1053,"category":1050,"cover":1051,"date":1052,"updated":1052,"readingMinutes":1085,"featured":1080},{"slug":1104,"title":1105,"excerpt":1053,"category":1093,"cover":1106,"date":1052,"updated":1052,"readingMinutes":1107,"featured":364},"fullstack-razrabotchik","Кто такой fullstack-разработчик и когда бизнесу выгоднее нанять одного, а не команду","/images/blog/fullstack-razrabotchik.webp",20,{"slug":1109,"title":1110,"excerpt":1053,"category":1093,"cover":1111,"date":1052,"updated":1052,"readingMinutes":1112,"featured":1080},"headless-cms-dlya-nuxt","Headless CMS для Nuxt: @nuxt/content, Strapi или WordPress","/images/blog/headless-cms-dlya-nuxt.webp",15,{"slug":1114,"title":1115,"excerpt":1053,"category":1093,"cover":1116,"date":1052,"updated":1052,"readingMinutes":1117,"featured":1080},"kak-nanyat-vue-nuxt-razrabotchika","Как нанять Vue/Nuxt-разработчика: гид практика на 2026 год","/images/blog/kak-nanyat-vue-nuxt-razrabotchika.webp",16,{"slug":1119,"title":1120,"excerpt":1053,"category":1050,"cover":1121,"date":1052,"updated":1052,"readingMinutes":1117,"featured":1080},"kak-vybrat-podryadchika-dlya-razrabotki-sajta","Как выбрать подрядчика для разработки сайта: фрилансер, студия или solo-разработчик","/images/blog/kak-vybrat-podryadchika-dlya-razrabotki-sajta.webp",{"slug":1123,"title":1124,"excerpt":1053,"category":1093,"cover":1125,"date":1052,"updated":1052,"readingMinutes":1101,"featured":1080},"nuxt-ili-next-chto-vybrat","Nuxt или Next: что выбрать для проекта в 2026","/images/blog/nuxt-ili-next-chto-vybrat.webp",{"slug":1127,"title":1128,"excerpt":1053,"category":1099,"cover":1129,"date":1052,"updated":1052,"readingMinutes":1085,"featured":1080},"programma-dlya-rascheta-tenderov","Программа для расчёта тендеров: как считать себестоимость заявки и когда нужна своя система","/images/blog/programma-dlya-rascheta-tenderov.webp",{"slug":1131,"title":1132,"excerpt":1053,"category":1099,"cover":1133,"date":1052,"updated":1052,"readingMinutes":1107,"featured":1080},"razrabotka-crm-na-zakaz","Разработка CRM на заказ: когда своя система выгоднее коробочной","/images/blog/razrabotka-crm-na-zakaz.webp",{"slug":1135,"title":1136,"excerpt":1053,"category":1093,"cover":1137,"date":1052,"updated":1052,"readingMinutes":1117,"featured":1080},"razrabotka-sajta-na-nuxt","Разработка сайта на Nuxt: когда фреймворк, а не Тильда","/images/blog/razrabotka-sajta-na-nuxt.webp",{"slug":1139,"title":1140,"excerpt":1053,"category":1099,"cover":1141,"date":1052,"updated":1052,"readingMinutes":1101,"featured":1080},"razrabotka-veb-prilozheniya-na-zakaz","Разработка веб-приложения на заказ: этапы, стек, сроки и цена","/images/blog/razrabotka-veb-prilozheniya-na-zakaz.webp",{"slug":1143,"title":1144,"excerpt":1053,"category":1050,"cover":1145,"date":1052,"updated":1052,"readingMinutes":1101,"featured":1080},"seo-dlya-nuxt","SEO для Nuxt: полный гайд по индексации и метатегам","/images/blog/seo-dlya-nuxt.webp",{"slug":1147,"title":1148,"excerpt":1053,"category":1050,"cover":1149,"date":1052,"updated":1052,"readingMinutes":1117,"featured":1080},"skolko-stoit-korporativnyj-sajt","Сколько стоит корпоративный сайт в 2026 году","/images/blog/skolko-stoit-korporativnyj-sajt.webp",{"slug":1151,"title":1152,"excerpt":1053,"category":1050,"cover":1153,"date":1052,"updated":1052,"readingMinutes":1085,"featured":1080},"skolko-stoit-lending","Сколько стоит разработка лендинга в 2026 году: честные цены","/images/blog/skolko-stoit-lending.webp",{"slug":1155,"title":1156,"excerpt":1053,"category":1099,"cover":1157,"date":1052,"updated":1052,"readingMinutes":1107,"featured":1080},"skolko-stoit-razrabotat-saas","Разработка SaaS: сколько стоит и с чего начать фаундеру","/images/blog/skolko-stoit-razrabotat-saas.webp",{"slug":1159,"title":1160,"excerpt":1053,"category":1161,"cover":1162,"date":1052,"updated":1052,"readingMinutes":1112,"featured":1080},"zakazat-razrabotku-internet-magazina","Заказать разработку интернет-магазина: что входит, как проходит работа и как принять результат","ecommerce","/images/blog/zakazat-razrabotku-internet-magazina.webp",{"slug":1164,"title":1165,"excerpt":1053,"category":1093,"cover":1166,"date":1167,"updated":1167,"readingMinutes":1168,"featured":1080},"chto-takoe-veb-prilozhenie","Что такое веб-приложение: как устроено, виды и на чём делают","/images/blog/chto-takoe-veb-prilozhenie.webp","2026-07-04",26,{"slug":1170,"title":1171,"excerpt":1053,"category":1050,"cover":1172,"date":1167,"updated":1167,"readingMinutes":1112,"featured":1080},"kak-proverit-skorost-sajta","Как проверить скорость сайта и как читать отчёт","/images/blog/kak-proverit-skorost-sajta.webp",{"slug":1174,"title":1175,"excerpt":1053,"category":1050,"cover":1176,"date":1167,"updated":1167,"readingMinutes":1177,"featured":1080},"skolko-stoit-sdelat-sajt","Сколько стоит сделать сайт под ключ в 2026 году","/images/blog/skolko-stoit-sdelat-sajt.webp",22,{"slug":1179,"title":1180,"excerpt":1053,"category":1161,"cover":1181,"date":1182,"updated":1182,"readingMinutes":1183,"featured":1080},"kak-sdelat-internet-magazin","Как сделать интернет-магазин с нуля: полный разбор от разработчика","/images/blog/kak-sdelat-internet-magazin.webp","2026-07-03",33,{"slug":1185,"title":1186,"excerpt":1053,"category":1050,"cover":1187,"date":1182,"updated":1182,"readingMinutes":1188,"featured":1080},"kak-uskorit-sajt","Как ускорить сайт: от замера в DevTools до архитектуры","/images/blog/kak-uskorit-sajt.webp",34,{"slug":1190,"title":1191,"excerpt":1053,"category":1161,"cover":1192,"date":1182,"updated":1182,"readingMinutes":1193,"featured":1080},"platforma-dlya-internet-magazina","На чём сделать интернет-магазин: конструктор, CMS или кастом","/images/blog/platforma-dlya-internet-magazina.webp",24,{"slug":1195,"title":1196,"excerpt":1053,"category":1161,"cover":1197,"date":1182,"updated":1182,"readingMinutes":433,"featured":1080},"skolko-stoit-internet-magazin","Сколько стоит интернет-магазин в 2026 году","/images/blog/skolko-stoit-internet-magazin.webp",1785483852346]