AJAXで動くWordPressをクロール可能にする


9

私は以下を読み、WordPressを実行している自分のWebサイトにこのスキームを適用しようとします:http : //code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

http://www.visualise.ca/にある私のWebサイトにアクセスすると、ホームページ内の投稿が読み込まれ、URLはhttp://visualise.ca/#!/anne-au-cherryになります。投稿が読み込まれました。同じコンテンツの静的バージョンは、クローラーでhttp://visualise.ca/anne-au-cherryから入手できますが、ブラウザーを使用している訪問者がアクセスすると、http://visualise.ca/#!にリダイレクトされます。 / anne-au-cherry(これはJavaScriptで行われます)。

クローラーに必要なものを提供するために、?_escaped_fragment_=私はネットで見つけたWordPressハックを使用しました:http : //www.wordpress-fr.net/support/sujet-54810-add-action-parse-requestそして今GoogleBotは私のAJAXで動くページのコンテンツを見ることができます。すべて終わったと思った。

しかし、Facebookに投稿リンクを貼り付けると(つまり)、ページのコンテンツを読み取ることができないため、Facebookがサポートしているため、私のWebサイトがGoogleドキュメントに記載されているスキームを実際に尊重していないと推測しました(httpを貼り付けた場合://twitter.com/#!/ gablabelle動作します)。したがって、jQuery.addressプラグインを使用してハッシュバング(#!)を取得しているので、私は彼らのWebサイトにアクセスしてサンプルファイルをダウンロードし、ファイルと私の違いを確認して、おそらくphp関数を使用していることに気付きました必要なHTMLのスナップショットを作成するには:https://github.com/bartaz/jquery-address/blob/master/samples/crawling/index.php私は推測する理由、これがあるので、Facebookが地雷を読み取ることができません。

<?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');
    }

?>

したがって、WordPressハックを使用する代わりに、同様のphp関数を使用してHTMLスナップショットを提供できると思いますが、WordPressに適合させる必要があります。問題は、私はプログラマーではなく、これまで最善を尽くしたことです。

私の投稿は次の形式です:http : //visualise.ca/#! / anne-au-cherry 、静的バージョンはhttp://visualise.ca/anne-au-cherryで入手できます(ここでanne-au-cherry投稿のスラッグであり、表示しているページに応じて変化します)。

だから私の質問は、誰かが私が正しい道にいることを確認でき、可能であればそのphp関数の作成にも役立つでしょうか?

あなたの時間と助けに感謝します!


5
サイトマップを生成することを考えましたか?たとえば、Yoast WordPress SEOはコンテンツのサイトマップを自動的に生成し、Bing、Google、Yahoo ...に

サイトマップのアイデアに+1します。ただし、Googleにサイトを表示するために渡されるURLパラメータについては、まだ混乱しています。a)ページコンテンツとb)JavaScriptなしの実行の両方を含むURLを貼り付けられますか?それが存在しない場合、GoogleやFacebookがクロールするものは何もありません。
brandwaffle

回答:


4

具体的に避ける AJAXパワードワードプレスサイトがクロール可能にするために、「hashbang」(「!の#」)を使用しました。

WordPressサイトで「ハッシュバング」メソッドを使いたくないのです。

"!#"は、AJAXバージョンの静的なアナログを提供できないサイトのためのハッキーパッチのようなものです。代替手段がない限り、一般的にその使用はGoogleによって推奨されていません。

WordPressにハッシュバンシステムを実装してもメリットはありません。WordPressのフロントエンドAJAXソリューションは、既存のURLスキーム(ハッシュなし、強打なし)を回避する必要があります。

概要:WordPressは当然クロール可能です。単にハッシュバングを使用してそれを壊さないでください。


1

Facebookがページのメタ情報を適切に表示していないことを具体的に言及している場合は、WordPressのOpenGraphプラグインを調べる必要があります。これにより、適切なog:attributeメタデータが追加されます。http://wordpress.org/extend/plugins/opengraph/

また、ヘッダーにこのようなリンクを追加できます

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

そして、それが何かを行うかどうかを確認します。

私は尋ねなければならない、なぜあなたはこれをしているのですか?このURL構造は、クロールするのが面倒だからといって、Twitterが大きな攻撃を受けています。あなたがそれをすべきではないと言っているわけではありませんが、その理由は何ですか?


1

私が実際に行ったことは、WraithKennyが示唆したようなハッシュバンを使用しないことです。

HTML5の状態管理で使用されるWebサイトのベースパスを設定するために$ .address.state(value)メソッドでjQueryアドレスプラグインを使用し、現在の値を設定するために$ .address.value(value)メソッドを使用するディープリンクの価値私が望んでいたことをすることができました。

http://visualise.ca/

投稿(画像のサムネイルをクリック)はAJAXを介して読み込まれ、URLが同時に変更されます。もちろん、投稿は同じパーマリンク構造を使用して独自に存在するため、完全にクロールできます。

唯一の問題は古いブラウザーで、検証される必要があると私は思うが、まだハッシュバングを見るでしょう。

私は開発者ではないので、理解するのにかなりの時間がかかりました。:-/しかし、今の結果にはとても満足しています;-)

jQueryアドレス:http : //www.asual.com/jquery/address/


1
jQuery pjaxプラグインを見てください。github.com/defunkt/jquery-pjax非常に似ていますが、コンテンツのロードなどを処理します。ここでは、Twenty Eleven Childテーマgithub.com/chrisguitarguy/pjaxy
chrisguitarguy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.