Новият сайт е почти готов. Изглежда по-добре, зарежда се по-бързо и всички са доволни, докато някой не попита какво ще стане с посещенията от Google. Ако искате да смените сайта, без да загубите позициите си в Google, най-важната работа се върши преди пускането, докато старият сайт още е онлайн.
В това ръководство събирате старите адреси, решавате къде води всеки от тях, пренасочвате ги с 301 и пренасяте заглавията и текстовете. Пазите тестовата версия извън Google и знаете какво да гледате в Search Console след пускането. Накрая има чеклист, който можете да дадете направо на изпълнителя.
Защо позициите в Google зависят от адресите
Google пази в индекса си страници, а всяка страница има адрес (URL). С времето към този адрес се натрупват позиции по определени търсения и връзки от други сайтове. Докато той отговаря със същото съдържание, всичко това остава.
Проблемът започва, когато новият сайт смени адресите. Ако старият адрес връща грешка 404, Google вижда изчезнала страница и новата започва отначало, а връзките от други сайтове отвеждат посетителите до страница за грешка. Така магазинът губи трафик, без в новия сайт да има нещо видимо счупено.
Google описва отделно преместванията с промяна на адресите и тези без промяна. Ако сменяте само хостинга и адресите остават същите, рискът е малък и ръководството за смяна на хостинг без престой е по-подходящо. Смяната на платформата или преработката на магазин в headless почти винаги сменя част от адресите, защото всяка система подрежда продуктите и категориите по свой начин.
Съберете старите адреси, преди да промените каквото и да е
Съставете списъка със старите адреси, докато старият сайт работи. Събирайте ги от няколко източника, защото всеки вижда различна част от сайта.
Картата на сайта
От версия 5.5 WordPress сам прави XML карта на сайта на адрес /wp-sitemap.xml. Някои SEO плъгини я изключват и публикуват своя, както прави Yoast SEO от версия 14.5, и тогава адресът е в настройките на плъгина.
Командата по-долу отваря картата, минава през по-малките карти в нея и записва всички адреси във файла stari-adresi.txt. Пуснете я от компютър с Mac или Linux или от Terminal в cPanel, а ако картата е на плъгин, сменете адреса в първия ред.
# Mac, Linux или Terminal в cPanel. Само чете, нищо не променя.
curl -s https://primer.bg/wp-sitemap.xml \
| grep -o '<loc>[^<]*' | sed 's/<loc>//' \
| while read -r map; do
curl -s "$map" | grep -o '<loc>[^<]*' | sed 's/<loc>//'
done > stari-adresi.txt
В картата влизат само страниците, които WordPress смята за публични, затова тя е едва началото на списъка.
Search Console
В отчета Performance изберете раздела Pages и най-дългия период и свалете таблицата с бутона Export. Тези страници носят посещения от Google и заслужават най-много внимание. В отчета Links таблицата Top linked pages показва страниците, към които водят връзки от други сайтове. Ако някоя от тях изчезне без пренасочване, връзките към нея започват да водят до грешка.
Програма за обхождане
Програмата за обхождане (crawler) минава по сайта като Googlebot и записва всеки адрес с кода на отговора, заглавието и мета описанието. Тя намира и адреси извън картата, например PDF файлове или стари кампании. Screaming Frog SEO Spider е такава програма, а безплатната ѝ версия обхожда до 500 адреса. Запазете експорта, за да сравните по-късно заглавията и описанията с новия сайт.
Свържете всеки стар адрес с нов
До всеки стар адрес запишете страницата в новия сайт, която най-точно го замества.
- Същото съдържание на нов адрес. Пренасочете стария адрес към новия.
- Две страници, събрани в една. Пренасочете и двата стари адреса към общата страница, което Google изрично допуска.
- Страница, която махате без заместител. Оставете я да връща 404 или 410, вместо да я пренасочвате към началната страница. Google съветва да не насочвате много стари адреси към една несвързана страница и може да ги отчете като soft 404, тоест като грешки, които се представят за нормални страници.
- Адрес, който не се променя. Остава в списъка, за да го проверите след пускането.
Таблицата за малък фирмен сайт може да изглежда така.
| Стар адрес | Нов адрес | Бележка |
|---|---|---|
| /za-nas/ | /kompaniya/ | същото съдържание |
| /uslugi/remont/ | /uslugi/remont-na-pokrivi/ | услугата е преименувана |
| /blog/ | /novini/ | разделът е преименуван |
| /promotsiya-leto/ | няма | 410, кампанията е приключила |
Пренасочвайте направо към крайния адрес. Ако А води към Б, а Б към В, това е верига. Google съветва да пренасочвате директно към целта, защото всяка стъпка добавя забавяне, а не всички браузъри следват дълги вериги.
Как да пренасочите старите адреси с 301
Пренасочването 301 казва на браузъра и на Google, че страницата е преместена за постоянно, и Google го приема като силен сигнал, че новият адрес е основният. Пренасочването 302 е временно и сигналът му е слаб, затова при смяна на сайта ползвайте 301.
В Apache с файла .htaccess
При Apache правилата влизат във файла .htaccess в главната папка на сайта, обикновено public_html. Копирайте файла, преди да го промените. Редовете по-долу пренасочват два стари адреса. Добавете ги над реда # BEGIN WordPress, никога вътре в блока на WordPress, защото WordPress го пренаписва при запазване на постоянните връзки.
# .htaccess в главната папка на сайта, над # BEGIN WordPress
RedirectMatch 301 ^/za-nas/?$ https://primer.bg/kompaniya/
RedirectMatch 301 ^/blog/?$ https://primer.bg/novini/
Знаците ^ и $ означават, че адресът трябва да съвпадне изцяло, а /? го приема и със, и без наклонена черта накрая. Адреси на кирилица можете да пишете на кирилица, стига файлът да е записан в UTF-8. За да отмените пренасочване, изтрийте реда му.
В nginx
При nginx няма .htaccess. Правилото влиза в блока server на сайта и действа след презареждане на nginx, затова обикновено го добавя хостингът или администраторът на сървъра.
# Конфигурацията на nginx, в блока server на сайта
location = /za-nas/ {
return 301 https://primer.bg/kompaniya/;
}
Знакът = означава точно съвпадение, затова запишете стария адрес така, както е в списъка, с наклонената черта накрая.
С плъгин за пренасочвания
Ако нямате достъп до файловете на сървъра или пренасочванията са стотици, плъгинът Redirection ги управлява от админ панела, приема списъци от CSV файл и записва грешките 404. Пренасочванията в него минават през WordPress, докато тези в .htaccess или nginx се изпълняват преди него.
Проверете пренасочванията
Когато правилата заработят, проверете всеки адрес от списъка. След всеки стар адрес командата показва крайния код, броя на пренасочванията и крайния адрес.
# Mac, Linux или Terminal в cPanel. Само чете, нищо не променя.
while read -r url; do
printf '%s ' "$url"
curl -s -o /dev/null -L \
-w '%{http_code} %{num_redirects} %{url_effective}\n' "$url"
done < stari-adresi.txt
200, 1 и новият адрес от таблицата означават, че всичко е наред. 200 и 2 е верига, която трябва да се скъси, 404 и 0 е липсващо пренасочване, а 200 и 0 е адрес, който не се е променил.
Запазете заглавията, мета описанията и съдържанието
Пренасочванията пазят адресите, но Google подрежда страниците според съдържанието им. Новият дизайн често съкращава текстове и маха блокове, които изглеждат излишни, и тогава страница, която носи посещения, може да загуби позиции и при правилно пренасочване.
Текстове и заглавия
Пренесете заглавието (елементът title) и мета описанието на всяка важна страница и ги сравнете с експорта от обхождането. Запазете подзаглавията и основния текст. Ако страница се е показвала при търсене на „ремонт на покриви в София“, новата ѝ версия трябва да отговаря на същия въпрос поне толкова ясно. Описание на продукт, съкратено до два реда, губи думите, по които хората са го намирали. Пренесете и алтернативния текст (alt) на снимките, защото Google го използва, за да ги разбере.
Вътрешни връзки, canonical и hreflang
Менюто, долната част на сайта и връзките в текстовете трябва да сочат директно новите адреси, без да минават през пренасочване, както изрично съветва Google. Етикетът canonical казва на Google кой адрес е основният за дадена страница. Всяка нова страница трябва да сочи себе си с новия си адрес, затова проверете дали canonical не сочи тестовата версия или старите адреси. На сайт с няколко езика обновете и hreflang, тоест връзките между езиковите версии.
Структурирани данни
Структурираните данни са код, който казва на Google какво има на страницата, например продукт с цена или фирма с адрес и телефон. Старият сайт може да ги е получавал от плъгин, който новият не ползва, затова проверете основните страници с Rich Results Test преди и след смяната.
Пълният списък с техническите проверки е в чеклиста за техническо SEO преди пускане. При преработката на WooCommerce магазин по нашия модел пренасочваме старите адреси към новите и пренасяме SEO данните на всяка страница.
Пазете тестовата версия извън Google
Новият сайт обикновено се прави на тестова версия (staging), например на поддомейн. Ако Google я индексира, в резултатите се появяват недовършени страници и копия на съдържанието. Трите начина да я скриете действат различно.
- Парола. Защитата с парола на ниво сървър е най-сигурна и Google я препоръчва за съдържание, което трябва да виждат само определени хора.
- noindex. Етикетът
<meta name="robots" content="noindex">или HTTP заглавкатаX-Robots-Tag: noindexказват на Google да не показва страницата. Работят само ако robots.txt не блокира страницата, защото иначе Google не вижда етикета. - robots.txt. Сам по себе си не стига. Google пише, че robots.txt не е начин да държите страница извън Google. Блокиран адрес пак може да се появи в резултатите, макар и без описание.
В WordPress отметката „Discourage search engines from indexing this site“ в Settings, Reading добавя етикет robots с noindex и nofollow на всяка страница. От версия 5.3 тя не пипа robots.txt, а докато е включена, картата на сайта също е спряна.
Какво да направите в деня на пускането
Денят на пускането минава по-спокойно, когато редът е ясен предварително.
- Направете пълен бекъп на стария сайт, за да можете да се върнете.
- Пуснете новия сайт и пренасочванията едновременно, за да не върнат старите адреси 404 нито за миг.
- Махнете noindex и проверете Settings, Reading и robots.txt.
- Пуснете проверката на пренасочванията и оправете всяко 404 и всяка верига.
- Подайте новата карта на сайта в отчета Sitemaps на Search Console.
- Ако сменяте домейна, използвайте инструмента Change of Address за стария домейн. При преминаване от http към https или между www и адрес без www той не е нужен.
- Сменете адресите, които сте поставили сами, в рекламите, профилите в социалните мрежи и имейл подписите и пишете на собствениците на сайтовете с най-важните връзки към Вас.
Какво да следите в Search Console след пускането
През първите седмици отваряйте Search Console поне веднъж седмично и гледайте четири места.
- Отчетът Pages. Адресите без пренасочване се появяват под „Not found (404)“, затова ги добавете в таблицата и в правилата. „Page with redirect“ е нормално за старите адреси, защото Google не индексира адрес, който пренасочва. Нови страници под „URL marked 'noindex'“ означават, че някъде е останал noindex.
- Отчетът Sitemaps. Новата карта започва от нула индексирани страници и расте постепенно.
- Отчетът Performance. Сравнете кликовете и показванията с периода преди смяната и следете в раздела Pages кога новите адреси започват да получават показвания.
- URL Inspection. Проверете няколко ключови страници, за да видите дали са индексирани и какво вижда Google.
Google пише, че при малък или среден сайт повечето страници се преместват в индекса за няколко седмици, че при големите отнема повече и че позициите могат временно да се колебаят. Спад и възстановяване могат да се случат и при внимателна смяна. Целта е да запазите натрупаното, а гаранция за позиции не може да даде никой, защото Google оценява новите страници наново. Ако спадът продължава няколко седмици, проверете отново за адреси с 404, останал noindex, съкратено съдържание и изгубени вътрешни връзки.
Google съветва да пазите пренасочванията колкото може по-дълго, обикновено поне година, а заради посетителите със стари отметки е разумно да останат завинаги.
Чеклист
- Старите адреси са събрани от картата на сайта, от Search Console и с програма за обхождане.
- Всеки стар адрес има нов или съзнателно връща 404 или 410, без масови пренасочвания към началната страница.
- Пренасочванията са 301 и водят директно към крайния адрес.
- Заглавията, мета описанията, текстовете и алтернативните текстове на снимките са пренесени.
- Вътрешните връзки, canonical и hreflang ползват новите адреси.
- Структурираните данни на основните страници са проверени с Rich Results Test.
- Тестовата версия е с парола, а в деня на пускането noindex е махнат.
- Всеки преместен адрес стига до 200 с едно пренасочване.
- Новата карта на сайта е подадена, Search Console се преглежда всяка седмица поне месец, а пренасочванията остават поне година.
Кога не е нужно да правите това сами
Ако сменяте само хостинга, адресите остават същите и повечето от тези стъпки не Ви трябват, затова следвайте ръководството за смяна на хостинг без престой.
Ако правите нов сайт или преработвате бавен WooCommerce магазин, тази работа е част от изработката на сайт и онлайн магазин. При преработката пренасочваме всеки сменен адрес и пренасяме съдържанието и SEO данните, а продуктите, поръчките и профилите на клиентите остават в WooCommerce. Всичко минава през staging и се пуска с план за връщане назад. Целта е натрупаното в Google да се запази, а позиции не обещаваме, защото те не зависят само от нас.
Често задавани въпроси
Губи ли сайтът позиции в Google след редизайн?
Може, ако редизайнът смени адресите на страниците без пренасочване. Google помни страниците по адрес и с времето адресът трупа позиции за определени търсения и връзки от други сайтове, а ако старият адрес върне грешка 404, новата страница започва от нулата. Ако се сменя само хостингът и адресите остават същите, рискът е малък.
Как да събера всички стари адреси на сайта преди редизайна?
Събирайте от няколко източника, докато старият сайт още работи. WordPress прави sitemap сам на /wp-sitemap.xml от версия 5.5, а в Google Search Console отчетът Performance показва страниците с посещения от Google, а отчетът Links страниците, към които водят други сайтове. Програма за обхождане като Screaming Frog SEO Spider намира и адреси извън sitemap, например PDF файлове или стари кампании.
Къде да пренасоча страница, която махам при редизайна?
Ако страницата няма заместник, оставете я да връща 404 или 410, вместо да я пренасочвате към началната страница. Google не препоръчва много стари адреси да водят към една несвързана страница и може да ги третира като меки 404. Ако две страници се сливат в една, пренасочете и двата стари адреса към новата, което Google изрично позволява.
Каква е разликата между пренасочване 301 и 302?
Пренасочването 301 казва на браузъра и на Google, че страницата е преместена за постоянно, и Google го приема като силен знак, че новият адрес е основният. 302 е временно и дава слаб знак, затова при смяна на сайта използвайте 301. Пренасочвайте направо към крайния адрес, защото верига от няколко пренасочвания добавя закъснение.
Как да пренасоча стари адреси в WordPress?
На Apache правилата се слагат във файла .htaccess в основната папка на сайта, над реда # BEGIN WordPress, а не вътре в блока на WordPress, защото WordPress го пренаписва при запазване на постоянните връзки. На nginx правилото влиза в блока server на сайта и обикновено го добавя хостингът. Ако не можете да редактирате файловете на сървъра или пренасочванията са стотици, плъгинът Redirection ги управлява от админа и внася списъци от CSV файлове.
Как да скрия тестовото копие на новия сайт от Google?
Най-сигурно е парола на ниво сървър, която Google препоръчва за съдържание, което трябва да виждат само определени хора. Маркерът noindex работи само ако robots.txt не блокира страницата, а самият robots.txt не стига, защото блокиран адрес пак може да се появи в резултатите. Преди пускането проверете, че noindex не е дошъл от тестовото копие, защото настройката се пази в базата и се мести с нея.
Какво да следя в Search Console след пускането на новия сайт?
В отчета Pages адресите без пренасочване се появяват под „Not found (404)“, а нови страници под „URL marked 'noindex'“ значат, че някъде е останал noindex. Следете как расте броят индексирани страници в отчета Sitemaps и сравнявайте кликовете и показванията в Performance с периода преди промяната. С URL Inspection проверете няколко ключови страници.
Колко време отнема Google да приеме новия сайт?
Според Google повечето страници на малък или среден сайт се преместват в индекса за няколко седмици, по-големите сайтове отнемат повече, а позициите може временно да се колебаят. Никой не може да гарантира позиции, защото Google оценява новите страници наново. Google съветва пренасочванията да се пазят колкото може по-дълго, обикновено поне година.
Източници
- Google, Site moves with URL changes
- Google, Changing your hosting
- Google, Redirects and Google Search
- Google, How HTTP status codes affect Google's crawlers
- Google, Block search indexing with noindex
- Google, Control what you share with Google
- Google, Introduction to robots.txt
- Google, Build and submit a sitemap
- Search Console Help, Page indexing report, Links report и Change of Address tool
- WordPress, Settings Reading screen
- WordPress Core, Changes to prevent search engines indexing sites (5.3)
- WordPress Core, New XML sitemaps functionality in WordPress 5.5
- Yoast, Yoast SEO 14.5 changelog
- Apache HTTP Server, mod_alias (RedirectMatch)
- nginx, location и return
- WordPress.org plugins, Redirection
- Screaming Frog, SEO Spider