Mein AJAX-basiertes WordPress crawlbar machen


9

Ich habe Folgendes gelesen und versuche, dieses Schema auf meine Website mit WordPress anzuwenden: http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

Wenn Sie besuchen Sie meine Website unter http://www.visualise.ca/ werden Sie sehen , dass es die Beiträge innerhalb der Homepage lädt und die URL wird http://visualise.ca/#!/anne-au-cherry wenn diese Beitrag wird geladen. Eine statische Version desselben Inhalts ist für den Crawler unter http://visualise.ca/anne-au-cherry verfügbar. Wenn ein Besucher, der einen Browser verwendet, diesen besucht, wird er zu http://visualise.ca/# weitergeleitet! / anne-au-cherry (dies geschieht mit Javascript).

Um den Crawler mit dem nötigen zu versorgen, habe ?_escaped_fragment_=ich einen WordPress-Hack verwendet, den ich im Internet gefunden habe: http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request und jetzt den GoogleBot kann den Inhalt meiner AJAX-basierten Seiten anzeigen. Ich dachte, es wäre alles erledigt.

Wenn ich jedoch einen Post-Link zu Facebook einfüge (dh), kann der Inhalt der Seite nicht gelesen werden. Daher habe ich vermutet, dass meine Website das in der Google-Dokumentation beschriebene Schema nicht wirklich einhält, da Facebook dies unterstützt (wenn Sie http einfügen) : //twitter.com/#! / gablabelle es wird funktionieren). Da ich das Plugin jQuery.address verwende, um meinen Hashbang (#!) Zu erhalten, habe ich ihre Website besucht und ihre Beispieldateien heruntergeladen, um zu sehen, welche Unterschiede zwischen ihren und meinen Dateien bestehen, und festgestellt, dass sie wahrscheinlich eine PHP-Funktion verwenden So erstellen Sie die erforderlichen HTML-Snapshots: https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php, da Facebook meine vermutlich nicht lesen kann.

<?php

    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));

    $fragment = $_REQUEST['_escaped_fragment_'];
    $file = 'data/' . (isset($fragment) && $fragment != '' && $fragment != '/' ? preg_replace('/\//', '', $fragment) : 'home') . '.xml';
    $re = '/(^<[^>]*>)|(\n|\r\n|\t|\s{2,4})*/';

    $handle = fopen($file, 'r');
    if ($handle != false) {
        $content = preg_replace($re, '', fread($handle, filesize($file)));
        fclose($handle);
    } else {
     $content = 'Page not found!';
        header(php_sapi_name() == 'cgi' ? 'Status: 404' : 'HTTP/1.1 404');
    }

?>

Ich vermute also, dass ich möglicherweise eine ähnliche PHP-Funktion verwenden könnte, um die HTML-Snapshots zu bedienen, anstatt den WordPress-Hack zu verwenden, aber ich müsste ihn an WordPress anpassen. Das Problem ist, dass ich kein Programmierer bin und bisher mein Bestes gegeben habe.

Mein Beitrag hat dieses Format: http://visualise.ca/#!/anne-au-cherry und die statische Version ist unter http://visualise.ca/anne-au-cherry (Where anne-au-cherry) verfügbar ist der Slug des Beitrags und ändert sich je nach der Seite, die wir anzeigen).

Meine Frage ist also, könnte jemand bestätigen, dass ich auf dem richtigen Weg bin und wenn möglich auch beim Erstellen dieser PHP-Funktion helfen?

Vielen Dank für Ihre Zeit und Hilfe!


5
Haben Sie daran gedacht, eine Sitemap zu erstellen? Zum Beispiel generiert Yoast WordPress SEO automatisch eine Sitemap für Ihre Inhalte und sendet sie an Bing, Google und Yahoo ...

+1 auf die Sitemap-Idee. Ich bin immer noch verwirrt über den URL-Parameter, der übergeben wird, um die Website Google anzuzeigen. Könnten Sie eine URL einfügen, die sowohl a) Seiteninhalt enthält als auch b) ohne JavaScript ausgeführt wird? Wenn dies nicht vorhanden ist, können Google oder Facebook nichts crawlen.
Brandwaffel

Antworten:


4

Insbesondere AVOID „Hash - Bang“ ( „#!“), Um unter Verwendung von AJAX angetriebenen Wordpress - Seiten gecrawlt zu machen.

Sie möchten die "Hashbang" -Methode auf einer WordPress-Site wirklich nicht verwenden.

Das "! #" Ist eher ein Hacky-Patch für Websites, die kein statisches Analogon zur AJAX-Version bieten können . Die Verwendung im Allgemeinen wird von Google nicht empfohlen, es sei denn, es ist keine Alternative verfügbar.

Die Implementierung eines Hashbang-Systems in WordPress hat keinen Vorteil . Eine Front-End-AJAX-Lösung für WordPress sollte das vorhandene URL-Schema umgehen (kein Hash, kein Knall).

Zusammenfassung: WordPress ist natürlich crawlbar; Brechen Sie es einfach nicht mit Hash-Bangs.


1

Wenn Sie sich speziell auf Facebook beziehen, das die Metainformationen für Ihre Seite nicht richtig anzeigt, sollten Sie sich das OpenGraph-Plugin für WordPress ansehen, da es die entsprechenden Metadaten für og: -Attribute hinzufügt. http://wordpress.org/extend/plugins/opengraph/

Sie können auch einen solchen Link in die Kopfzeile einfügen

<link rel="canonical" href="link_back_to_real_post_url">

Und sehen Sie, ob das etwas bewirkt.

Ich muss allerdings fragen, warum machst du das? Twitter ist wegen dieser URL-Struktur unter großes Feuer geraten, gerade weil das Crawlen schmerzhaft ist. Ich sage nicht, dass du es nicht tun sollst, aber ziemlich neugierig, was der Grund ist :)


1

Was ich tatsächlich getan habe, ist, keine Hashbangs zu verwenden, wie es WraithKenny vorgeschlagen hat.

Verwenden des jQuery-Adress-Plugins mit der Methode $ .address.state (value), um den Basispfad der Website festzulegen, die in der HTML5-Statusverwaltung verwendet wird, und der Methode $ .address.value (value), um den aktuellen Wert festzulegen Deep Linking Value Ich konnte tun, was ich mir gewünscht hatte.

http://visualise.ca/

Beiträge (klicken Sie auf ein Bild-Miniaturbild) werden über AJAX geladen und die URL ändert sich gleichzeitig. Die Beiträge existieren für sich und verwenden natürlich dieselbe Permalink-Struktur, sodass sie vollständig crawlen können.

Das einzige Problem wird für ältere Browser sein, die, glaube ich (müssen überprüft werden), immer noch die Hashbangs sehen.

Da ich kein Entwickler bin, habe ich viel Zeit gebraucht, um zu verstehen. : - / Aber ich bin jetzt ziemlich zufrieden mit den Ergebnissen ;-)

jQuery-Adresse: http://www.asual.com/jquery/address/


1
Schauen Sie sich das jQuery pjax Plugin an. github.com/defunkt/jquery-pjax Es ist sehr ähnlich, kümmert sich aber darum, den Inhalt für Sie usw. zu laden. Hier ist ein Beispiel dafür, was ich damit für ein Thema mit elf
Kindern gemacht habe.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.