Google nie indeksuje plików CDN

11

Zauważyłem, że Narzędzia Google dla webmasterów zgłaszają wiele zablokowanych zasobów w mojej witrynie. W tej chwili wszystkie „zablokowane zasoby” to .css, .js i obrazy (.jpg, .png), które obsługuję z Cloudfront CDN.

Spędziłem dużo czasu testując i próbując dowiedzieć się, dlaczego Google nie indeksuje tych plików i zgłasza stan „blokowania zasobów”.

Obecnie obsługuję te pliki z kilku nazw hostów, takich jak: cdn1.example.com, cdn2.example.com,…

cdn1, cdn2 i inne są nazwami CNAME nazwy dystrybucji w chmurze.

Test: Próbowałem użyć bezpośrednio dystrybucji w chmurze (brak CNAME), ale problem nadal występuje.

Obecnie mój plik robots.txt wygląda następująco:

# Google AdSense
User-agent: Mediapartners-Google
Disallow:

#Google images
User-agent: Googlebot-Image
Disallow: /

User-agent: *
Disallow: /homepage
Disallow: /index.php*
Disallow: /uncategorized*
Disallow: /tag/*
Disallow: *feed
Disallow: */page/*
Disallow: *author*
Disallow: *archive*
Disallow: */category*
Disallow: *tag=*
Disallow: /test*
Allow: /

I przykłady plików zablokowanych na jednej przykładowej stronie:

  • cdn1.example.com/wp-content/plugins/wp-forecast/wp-forecast-default.css

  • cdn9.example.com/wp-content/plugins/bwp-minify/min/?f=wp-content/themes/magazine/css/font-awesome.min.css,wp-content/themes/magazine/css/responsive .css

  • cdn5.example.com/wp-content/themes/magazine/images/nobg.png

  • cdn6.example.com/wp-content/plugins/floating-social-bar/images/fsb-sprite.png

  • cdn5.example.com/wp-content/uploads/2013/11/Design-Hotel-3-80x80.jpg

  • cdn5.example.com/wp-content/uploads/2013/11/Marta-Hotel-7-270x225.jpg

Próbowałem nawet zezwolić na wszystko w pliku robots.txt, ale zawsze mam ten sam wynik.

Patrzę też uważnie na ustawienia CloudFront w Amazon i nie widzę nic, co mogłoby być powiązane (nie używam i nigdy nie korzystałem z opcji: „Ogranicz dostęp do przeglądarki (użyj podpisanych adresów URL lub podpisanych plików cookie)”.

W tej chwili spędziłem dużo czasu na analizowaniu tego i nie mam więcej pomysłów.

Czy ktoś może wymyślić powód, dla którego Googlebot miałby blokować indeksowanie plików hostowanych w Amazon CloudFront?

tonelot
źródło
Czy sprawdziłeś nagłówki odpowiedzi HTTP tych „zablokowanych zasobów”? Jaki dokładnie błąd zgłasza GWT? Jeśli zostały zablokowane przez plik robots.txt, powinien to zgłosić.
MrWhite
Drobny komentarz na temat pliku robots.txt ... Adresy URL są domyślnie dopasowane, więc nigdy nie ma potrzeby umieszczania *na końcu „prefiksu” adresu URL. /test*jest taki sam jak /test.
MrWhite
Cześć, nie mogę sprawdzić nagłówków, ponieważ nie wiem, co dostaje GoogleBot. Właśnie dostaję komunikat: „Googlebot nie mógł uzyskać wszystkich zasobów dla tej strony. Oto lista:”, a następnie lista wszystkich plików hostowanych przez CDN (js, css i obrazy) z „Powodem”: „Zablokowany”.
tonelot
Ponieważ proszę o „pobieranie i renderowanie”, widzę też, że w renderowaniu brakuje stylów i obrazów ....
tonelot
Dziękuję również za uwagę dotyczącą składni pliku robots.txt.
tonelot

Odpowiedzi:

7

Tak więc wydaje się, że rozwiązaniem jest to, że Amazon Cloudfront również ocenia mój robots.txti w jakiś sposób używa innych reguł składniowych niż Google.

Działająca wersja mojego robots.txtjest następująca:

User-agent: Googlebot-Image
Disallow: /
User-agent: *
Disallow: /homepage
Disallow: /uncategorized
Disallow: /page
Disallow: /category
Disallow: /author
Disallow: /feed
Disallow: /tags
Disallow: /test

Bardzo ważna uwaga, aby powiedzieć, że nie wykonuje dokładnie takich samych funkcji jak poprzednio. W rzeczywistości wyjąłem wszystkie puste wiersze, symbole wieloznaczne i dyrektywy „zezwalaj”. Oznacza to, że wynik końcowy nie jest taki sam ... ale myślę, że jest dla mnie wystarczająco blisko. Na przykład nie wyklucza stron znaczników przekazanych w ciągu zapytania ...

Trzy ważne uwagi:

  1. Jeśli robots.txttestujesz z tym, nie zapomnij unieważnić dystrybucji w chmurze dla każdej iteracji. Samo sprawdzenie, czy doręczono Ci ostatnią wersję, nie wystarczy.

  2. Nie mogłem nigdzie znaleźć definicji robot.txtskładni rozumianej przez chmurę Amazon. To była próba i błąd.

  3. Aby przetestować wyniki, użyj narzędzia „pobierz i wyrenderuj” google webmastera i ich przyjaznego testera mobilnego ( https://www.google.com/webmasters/tools/mobile-friendly/ )

Nie rozumiem, dlaczego Cloudfront sprawdza i ocenia moje robots.txt. Ten plik to „umowa” ze mną i robotami indeksującymi, które trafiają na moją stronę. Amazon nie ma biznesu w środku. Bałagan z moim robots.txtjest po prostu głupi.

Nigdy nie przyszło mi do głowy, że cloudfront może odgadnąć moją robots.txtskładnię.

tonelot
źródło
2

Utwórz plik robots.txt w wiadrze.

Utwórz inne źródło swojej dystrybucji w chmurze.

Ustaw priorytet swojego segmentu na wyższy niż na swojej stronie internetowej.

Unieważnij plik robots.txt witryny w Cloudfront.

Po wykonaniu powyższych czynności Google odczyta strony robots.txt podczas indeksowania witryny i zobaczy inne pliki robots.txt, podążając za linkami z dysku CDN.

Parminder Singh Chahal
źródło
1

Google nie blokuje indeksowania zasobów zewnętrznych za pomocą pliku robots.txt w katalogu głównym witryny głównej. Za pomocą subdomeny cdn lub inną klasyfikuje się jako domenę zewnętrzną, dlatego jedynym sposobem na zablokowanie zawartości jest użycie odpowiedzi nagłówka na pliku obsługiwanym przez samą CDN lub użycie pliku robots.txt na cdn lub subdomenie .

Za pomocą:

#Google images
User-agent: Googlebot-Image
Disallow: /

Powinieneś blokować tylko obrazy lokalne, musisz zrobić to samo w CDN.

Możliwe, że jest to problem z odpowiedzią na nagłówek i powinieneś zrobić „CURL” na jednym z plików w CDN. Powinien wyglądać mniej więcej tak:

HTTP/1.0 200 OK
Cache-Control: max-age=86400, public
Date: Thu, 10 May 2012 07:43:51 GMT
ETag: b784a8d162cd0b45fcb6d8933e8640b457392b46
Last-Modified: Tue, 08 May 2012 16:46:33 GMT
X-Powered-By: Express
Age: 7
Content-Length: 0
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: V_da8LHRj269JyqkEO143FLpm8kS7xRh4Wa5acB6xa0Qz3rW3P7-Uw==,iFg6qa2KnhUTQ_xRjuhgUIhj8ubAiBrCs6TXJ_L66YJR583xXWAy-Q==
Via: 1.0 d2625240b33e8b85b3cbea9bb40abb10.cloudfront.net (CloudFront)
Connection: close

Należy zwrócić uwagę na:

HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
Simon Hayter
źródło
Cześć, dziękuję za odpowiedź. Ale moim problemem nie jest to, jak zapobiec indeksowaniu obrazów. Aby uniknąć zamieszania, wyjąłem to z pliku robots.txt i wyniki są takie same. Googlebot narzeka, że ​​jest zablokowany na plikach hostowanych w chmurze i nie wiem dlaczego. Jeszcze jakieś pomysły? Dzięki za uwagę
Yoru
Tęsknisz za zrozumieniem, wiem, że nie chcesz, aby było blokowane ... dlatego powiedziałem na dole, aby upewnić się, że twoja odpowiedź nagłówka NIE robi tagu X-robots, również mówisz check the robots.txt on your CloudFront distribution, że to powiedziałem! Jedynym sposobem na zablokowanie indeksowanych obrazów w CDN jest x-robots-tag i robots.txt w samej CDN, ponownie wspomniany.
Simon Hayter
1

Znalazłem problem: CloudFront czyta plik robots.txt i uniemożliwia wyświetlanie zawartości, ale wydaje się, że analizuje niektóre, w odróżnieniu od tego, jakie roboty powinny.

Na przykład następująca treść w pliku robots.txt:

Disallow: */wp-contents/ Allow: */wp-contents/themes/

Gdy Googlebot sam go pobierze, indeksuje go; Kiedy CloudFront ją czyta, nie bierze pod uwagę dyrektywy „Zezwól” i zabrania serwowania czegokolwiek w środku */wp-contents/themes/.

Krótka odpowiedź: sprawdź plik robots.txt w Twojej dystrybucji CloudFront, może to być problem. Unieważnij i zaktualizuj poprawioną wersję i powinna działać!

snagnever
źródło
Cloudfront nie „czyta” pliku robots.txt ani nie „rozważa” jego zawartości, ani „czegoś” zapobiega. Pamiętaj, że to, co ty dostać od CloudFront podczas pobierania obiektu powie Ci nic na temat tego, co ktoś podawane z innej lokalizacji krawędzi dostanie, jeśli ich krawędź buforowane wcześniejszy lub później niż to, co do ciebie zrobił. Ponadto wiodące symbole wieloznaczne są prawdopodobnie receptą na nieoczekiwane zachowanie, ponieważ „standard” wykluczania robotów nie jest dobrze znormalizowany.
Michael - sqlbot
„CloudFront czyta plik robots.txt” - Czy to plik robots.txt hostowany na samym CloudFront? „Wiodący symbol wieloznaczny” również wydaje się niepotrzebny, jeśli adresy URL są podobne do podanych w pytaniu.
MrWhite
Cześć. Zdecydowanie Cloudfront czyta mój plik robots.txt. A także zdecydowanie nie akceptuje tej samej składni co Google. Testowałem już usunięcie pliku robots.txt i nie widziałem żadnych wyników, ponieważ nie zażądałem i unieważnienia w chmurze. Zakładając, że nie było to konieczne, ponieważ serwowano mi najnowszą wersję. Testowanie zajmuje dużo czasu, ponieważ każda zmiana wymaga żądania unieważnienia, które trwa wiecznie. wrócę za kilka godzin z działającą wersją. Nie wiem, dlaczego taki „spryt” jest potrzebny… ale on istnieje i myślę, że nie powinien. miguel
tonelot
Ten sam plik robots.txt, który znajduje się na moim apache, jest tym, który ma chmura. Ustaliłem to empirycznie.
snagnever