Szereg stron tworzonych przy pomocy JavaScript boryka się z problemami indeksowania. Problem dotyczy przede wszystkim aplikacji webowych opartych na React, które korzystają z Single Page Applications (SPA). Poważny mankament wpływa na to, że strony, które nie mają być indeksowane, pojawiają się w wynikach wyszukiwania. Z kolei te, które są skierowane na odbiorców zewnętrznych, zniknęły z wyszukiwarki, co całkowicie uniemożliwia ich pozycjonowanie przez ostatnie miesiące. Problem został ostatecznie dostrzeżony i naprawiony przez Google. Przyglądamy się, co było przyczyną problemu i czy obecnie strony JavaScript napotykają na podobne trudności.
Google indeksuje strony JavaScript pomimo komendy noindex
Setki stron opartych na JavaScript nie mogło zostać prawidłowo zaindeksowanych. Dla wielu firm to ogromny problem, który wyklucza ich z walki o ruch organiczny i pozyskanie nowych klientów. Z kolei inne strony, które mają ustawienie noindex, pomimo tego znajdują się w wyszukiwarce, a crawlery Google ignorują komendy w robots.txt. Problem jest poważny zwłaszcza z tego powodu, że za brak możliwości indeksacji takich stron lub indeksację z pominięciem dyrektyw noindex nie odpowiadają żadne błędy techniczne po stronie użytkownika. Wydaje się, że jedyną przyczyną są błędy narzędzi indeksujących Google.
Obecnie Google pracuje nad przywróceniem prawidłowego przetwarzania dyrektywy noindex na niektórych stronach generowanych za pomocą JavaScript. Problem występuje w niektórych aplikacjach React, korzystających z Single Page Applications (SPA). Google nie rozpoznaje prawidłowo dyrektywy noindex, przez co indeksowane są strony, które nie powinny być rejestrowane przez wyszukiwarkę.
Tysiące strony z problemami indeksowania
Problem został zauważony przez Marka Williams-Cooka, dyrektora Candour oraz założyciela AlsoAsked – popularnego narzędzia SEO. We wpisie na LinkedIn Williams-Cook podzielił się przykładem jednej z zarządzanych stron internetowych opartych o Single Page Applications, pisząc: „oto zrzut ekranu ponad 9,000 stron z ustawionym 'noindex’, które zostały zaindeksowane. Dodawanie 'noindex’ poprzez JavaScript może być rozwiązaniem, ale jest ono zupełnie niewiarygodne”. Poniżej wspomniany zrzut ekranu, który szybko rozszedł się wśród społeczności SEO:
Strony w aplikacji React, w której informacje meta noindex są dodane za pomocą JavaScript, również mogą nie działać prawidłowo. Google odczytuje informacje meta, ale wydaje się je ignorować. W rezultacie takie strony również zostają zaindeksowane. Na temat tego problemu zabrał głos także Martin Splitt z Google, który już wcześniej wypowiadał się na temat działania komendy noindex w kontekście stron tworzonych w JavaScript. Przyznaje, że algorytmy Google czasami mają trudności z przetwarzaniem tych dyrektyw w przypadku niektórych stron.
Przyczyną problemu może być to, że Google pobrało i wyrenderowało stronę zanim JavaScript wykonał dane meta z noindex. W związku z tym Googlebot nie zobaczył jeszcze dyrektywy noindex. Kiedy z kolei crawler napotkał i przetworzył polecenie, nie dodawał kolejnych stron do indeksu, ale jednocześnie pozostawił w nim te, które dotąd zdążył zaindeksować. Splitt podkreśla także, że tego typu sytuacje mają czasami miejsce w przypadku stron opartych na JavaScript lub w procesie generowania danych strukturalnych za pomocą JavaScript. Algorytmy Google mają nie radzić sobie tak skutecznie z przetwarzaniem danych w JS.
Rozwiązanie problemu, czy ominięcie go?
Ostatecznie problem udało się rozwiązać – sposobem było użycie CloudFlare do serwowania dyrektywy noindex przed odczytaniem JavaScript, które jest dostarczane w nagłówku HTTP. Można też zastosować inne kroki, które sprawią, że Googlebot wpierw odczyta komendę noindex, a dopiero później zajmie się przetwarzaniem JavaScript, z którym najwyraźniej ma większe trudności.
W przypadku niektórych strony typu Single Page Applications (SPAs) faktycznie trudne może być kontrolowanie, co jest wyświetlane przed przetwarzaniem JavaScript. Ustawienie dyrektywy w taki sposób, by była odczytywana przed rozpoczęciem renderowaniem JavaScript, np. przy wykorzystaniu reguł Cloudflare Transform, to tylko jeden z potencjalnych sposobów rozwiązania problemu. Google nie wskazuje, który sposób miałby być najlepszy i pozostawia to w gestii deweloperów.
Jak popularne są strony z React i JavaScript?
Wbrew pozorom omawiany problem nie jest wcale niszowy. Strony tworzone w React i JavaScript to najczęściej Single Page Applications (SPA), czyli aplikacje jednostronicowe lub Progressive Web Applications (PWA), czyli oferujące funkcjonalność stron mobilnych. Wszystkie działają na dynamicznie zmieniającej się stronie. Zamiast ładować różne strony z serwera za każdym razem, gdy użytkownik klika w nowy link, cała zawartość jest dynamicznie zmieniana w czasie rzeczywistym. Jest ona także renderowana po stronie klienta (przeglądarki) przy użyciu JavaScriptu, a React jest jednym z najpopularniejszych frameworków do tworzenia tego rodzaju aplikacji.
Do zalet tego typu stron zalicza się przede wszystkim szybkie działanie. PWA mogą też sprawnie funkcjonować w wersji offline. Obydwa warianty szybko się ładują, oferując płynne przejścia między poszczególnymi sekcjami. Zmniejszona ilość danych przesyłanych z serwera ogranicza czas ładowania i zapewnia płynność. Rozwiązania te mają też swoje mankamenty. Najczęściej do wad stron typu SPA i PWA zaliczamy trudności z obsługą starszych przeglądarek, złożoność zarządzania tego typu stronami oraz problemy z SEO przy dynamicznym ładowaniu treści i indeksacji.
Najnowszy problem z indeksacją stron SPA w Google nie dotyczy zwykle początkujących i średniozaawansowanych webmasterów. Strony dynamiczne oparte na React i JS najczęściej stosowane są w branży technologicznej i SaaS. Korzystają z nich m.in. Slack, Trello czy Atlassian. Popularne są również w branży e-commerce i finansach, o czym świadczy chociażby wykorzystanie ich przez Amazon, Zalando, Shopify, a także N26 i Revolut. Dzięki dynamicznym funkcjom charakterystycznym dla SPA aplikacje te mogą działać sprawniej i bardziej responsywnie.
React jest jednym z najpopularniejszych frameworków JavaScript na świecie. Wśród innych frameworków i bibliotek, takich jak Angular czy Vue.js, React zdecydowanie dominuje w wielu sektorach, co wynika z jego elastyczności, szerokiego wsparcia i względnej prostoty obsługi dużych aplikacji.
Google radzi, jak ominąć błąd noindex – podsumowanie
Pozycjonowanie stron korzystających z React i JavaScript jest nieco utrudnione, ale nie z winy programistów, tylko Google. Najnowszy problem polegający na braku stosowania się do komendy noindex wprowadził wiele zamieszania. Niektóre strony nie są indeksowane pomimo tego, że powinny znajdować się w indeksie, inne zaś odwrotnie – trafiają do wyników wyszukiwarki mimo zastosowania dyrektywy noindex.
To nie pierwszy raz, kiedy szereg stron tworzonych przy pomocy JavaScript boryka się z problemami indeksowania. Problem ostatecznie został dostrzeżony przez Google, ale zalecane rozwiązanie jest dalekie od idealnego. Zamiast zwiększyć skuteczność Googlebotów zaleca się niejako ominięcie błędu poprzez zawarcie komendy noindex poza JavaScript tak, by crawler mógł napotkać na nią jeszcze przed przetwarzaniem strony. Biorąc pod uwagę to, jak wiele stron korzysta z bilbiotek używających React i JavaScript, i to, że są to często bardzo rozbudowane strony biznesowe, zadziwiać może brak bardziej stanowczej reakcji Google.