Google Index

Google indiziert die Seiten falsch

Nach dem Relaunch dieser Website hab ich die Einträge in Google nach einiger Zeit kontrolliert - und bin fast vom Stuhl gefallen: Alle neu indizierten Seiten zeigen nun aus Zusammenfassung des Inhalts in den Suchergebnissen den Anfang meiner mobilen Navigation statt den eigentlichen Text der Seite.

Der Seitenaufbau ist eigentlich genau wie er sein soll, der Text wird mit <h1> und <h2> Tags strukturiert, so wie es sein soll. Aber trotzdem landet die Navigation im Index.

Ich habe endlos viele Sachen versucht, um das Problem in den Griff zu bekommen und herauszufinden, warum es schief geht.

Erstellt: 10/2015| Geändert: 10/2015

Verdacht 1: Stylesheets

Laden der Stylesheets

Die Vermutung ist, daß die Stylesheets nicht geladen werden, dadurch die Navigation nicht auf "display: none" gesetzt wird und so als Text interpretiert.

Das ich ca. 300 Seiten hier habe und am überarbeiten und umstrukturieren war, habe ich immer wieder den gesamten Cache gelöscht. Daraufhin braucht der Server sehr lange, beim ersten Aufruf einer Seite, wenn er den Cache wiederaufbaut.

Ich vermutete also, daß die Stylesheets so lange brauchen, daß Google in einen Timeout läuft, meine Stylesheets nicht lädt und dann die sichtbare Navigation indiziert.

Ich dachte also, ich bin schlau und schreibe oben in's HTML Template folgendes:

<style type="text/css">
.side-column, .navbar, .sr-only {
    display: none;
}
</style>

Damit ist die Navigation nicht sichtbar und später in meinen Stylesheets setzte ich es dann auf "display: block".

Ergebnis: Seiten werden immer noch falsch indiziert

Ansicht im Google Cache

Wenn die Seite im Google Cache angezeigt wird, wurde sie ohne Stylesheets angezeigt, also Nur Text, meine ganz Navigation war als Text lesbar.

Grund: Google fügt vor meinem HTML noch folgendes ein:

<!DOCTYPE html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<base href="http://www.xn--typo3-nrnberg-2ob.de/entwickler/eigene-extensions/pi-base/archiv/rsys-savereminder.html">

Dann geht mein Code los:

<!DOCTYPE html>
<html lang="de" dir="ltr" class=" js flexbox flexboxlegacy ...
<base href="http://www.xn--typo3-nrnberg-2ob.de/">
...
</html>

Das führte dazu, daß Google von folgender URL versucht mein CSS zu laden:

www.xn--typo3-nrnberg-2ob.de/entwickler/eigene-extensions/pi-base/archiv/typo3temp/compressor/merged-b44ea13f86c1413b86046cf9659ddf1d-69a737d11e146d9bdfc43731b08274f7.js.gzip

Das klappt natürlich nicht. Das obere <base href=".."> überschreibt wohl meines. Die Live Anzeige der Seite klappt einwandfrei, aber der Google Cache zeigt eben Quatsch an.

Lösung:

Ich habe also folgende Rewrite Rules in die .htaccess:

RewriteRule ^.*/typo3temp/(.*)$    /typo3temp/$1 [L]
RewriteRule ^.*/fileadmin/(.*)$    /fileadmin/$1 [L]

Dann werden die Styles und das Javascript auch geladen in der Cache Ansicht. Aber:

Ergebnis: Seiten werden immer noch falsch indiziert

Erstellt: 10/2015| Geändert: 10/2015

Verdacht 2: Javascript

In Javascript klappte ich die Navigation für's Mobiltelefon aus, so daß die aktuelle Seite gleich zu sehen ist in der Navigation. Das hatte ich auch in Verdacht. Ich habe diesen Teil des Javascripts deaktiviert, ohne Erfolg.

Ergebnis: Seiten werden immer noch falsch indiziert

Generell

Dabei habe ich mich gefragt, ob Google überhaupt Javascript ausführt. Wenigstens hierfür hat all die Mühe sich gelohnt: Ich weiss nun, daß Google das Javascript auführt.

Die Website liefert das html tag wie folgt aus:

<html  lang="de" dir="ltr" class="no-js">

Wenn das Javascript ausgeführt sieht das html tag so aus (gekürzt):

<html class=" js flexbox flexboxlegacy canvas canvastext .... smil svgclippaths" lang="de" dir="ltr">

Ich habe nun in den fehlerhaften Index Einträgen den Cache von Google angesehen. Dort zeige ich den Tab "Quelle anzeigen" an und sehe im Sourcecode das <html class=" js flexbox flexboxl Tag. Damit ist klar, daß Google beim Rendern das Javascript ausgeführt hat.

Bei manchen Seiten stand auch nur das <html  lang="de" dir="ltr" class="no-js"> Tag. Hier vermute ich, daß das Javascript nicht geladen werden konnte.

Erstellt: 10/2015| Geändert: 10/2015

Verdacht 3: Dokument Struktur

Ich hatte den Kopfbereich als <header> und darin ein <p>Ein Service von rootsystem</p> stehen. Das war dann das erste im Index. Also habe ich die Dokumentstruktur umgebaut: der <header> ist zum <nav> geworden, das <p> zum <div>. Im Glauben, daß Google dies respektieren würde. Fehlanzeige...

Ergebnis: Seiten werden immer noch falsch indiziert

Erstellt: 10/2015| Geändert: 10/2015

Verdacht 4: Google ist einfach doof

Nach ca 5 Tagen mein Template komplett auf den Kopf stellen -  ich kann hier gar nicht dokumentieren was ich alles versucht habe - und endlosen Seiten von den Webmaster Tools submitten an den Google Index und suchen nach Zusammenhängen gebe ich es auf.

Zwei identische Seiten (Test 1, Test 2) mit absolut gleicher Struktur: eine wird korrekt indiziert, die andere nicht, gebe ich auf. Da kann keine Logik dahinter sein.

Also habe ich meine Seite umgebaut, das schöne, praktische Dropdown Menü oben ist nun weg, es gibt noch die 5 Hauptlinks, keine 300 Seiten als Dropdown. Das Dropdown für Mobiltelefon ist nun ganz unten an die Seite angehängt statt oben und wird bei Klick auf "Menü ausklappen" erst nach oben verlegt per Javascript:

$('.navbar-toggle').on('click', function (event) {
   event.preventDefault();
   $('#rsys-mobile-menu').detach().appendTo('#rsys-mobile-menu-target');
   $( ".rsys-mainmenu-collapse" ).slideToggle("slow","swing", function(){});      
});

Da wo das Menü war (#rsys-mobile-menu) ist nun ein leeres div (#rsys-mobile-menu-target) und bei Klick wird die Navi nach oben verschoben.

So sieht Google nun meine 5 Buttons, das Logo und dann direkt den Inhalt - und siehe da: der Index funktioniert nun. Google war nur das Menü mit 300 Einträgen zu lange, so daß es aufgegeben hat, nach den Inhalt zu suchen, der schon mit <article><h1><h2><p> ausgezeichnet wäre.

 

Erstellt: 10/2015| Geändert: 10/2015