내 AJAX 기반 WordPress 크롤링 가능


9

다음 내용을 읽고 WordPress를 실행하는 웹 사이트에이 구성표를 적용하려고합니다. http://code.google.com/intl/fr-CA/web/ajaxcrawling/index.html

내 웹 사이트 http://www.visualise.ca/ 를 방문 하면 홈 페이지에 게시물이로드되고 URL이 http://visualise.ca/#!/anne-au-cherry가 됩니다. 게시물이로드되었습니다. 크롤러에서 동일한 콘텐츠의 정적 버전을 http://visualise.ca/anne-au-cherry 에서 사용할 수 있지만 브라우저를 사용하는 방문자가 방문하면 http://visualise.ca/# 로 리디렉션됩니다 . / anne-au-cherry (자바 스크립트로 수행)

크롤러에게 필요한 ?_escaped_fragment_=것을 제공하기 위해 인터넷에서 찾은 WordPress 핵을 사용했습니다 : http://www.wordpress-fr.net/support/sujet-54810-add-action-parse-request 그리고 지금 GoogleBot은 내 AJAX 기반 페이지의 내용을 볼 수 있습니다. 나는 그것이 모두 끝났다고 생각했다.

그러나 Facebook에 게시물 링크를 붙여 넣으면 페이지의 내용을 읽을 수 없으므로 Facebook에서 지원하기 때문에 내 웹 사이트가 Google 문서에 설명 된 체계를 실제로 존중하지 않는 것으로 생각했습니다 ( http 를 붙여 넣은 경우 : //twitter.com/#! / gablabelle 작동합니다). 그래서 jQuery.address 플러그인을 사용하여 hashbang (#!)을 얻었으므로 웹 사이트로 이동하여 샘플 파일을 다운로드하여 파일과 광산의 차이점이 무엇인지 확인하고 아마도 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 핵을 사용하는 대신 HTML 스냅 샷을 제공하기 위해 비슷한 PHP 기능을 사용할 수 있지만 WordPress에 적용해야한다고 생각합니다. 문제는 프로그래머가 아니며 지금까지 최선을 다했다는 것입니다.

내 게시물이 형식에 있습니다 http://visualise.ca/#!/anne-au-cherry 및 정적 버전에서 사용할 수 있습니다 http://visualise.ca/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 사이트에서 "hashbang"방법을 사용하고 싶지 않습니다.

"! #"은 정적 아날로그를 AJAX 버전으로 제공 할 수없는 사이트를위한 해키 패치와 비슷합니다 . 다른 대안이없는 한 Google에서는 일반적으로 사용하지 않는 것이 좋습니다.

WordPress에서 해시 뱅 시스템을 구현하면 이점없습니다 . WordPress 용 프런트 엔드 AJAX 솔루션은 기존 URL 체계 (해시, 강타 없음)를 해결해야합니다.

요약 : 워드 프레스는 자연스럽게 크롤링 가능합니다. 단순히 해시 뱅을 사용하여 중단하지 마십시오.


1

Facebook에서 페이지의 메타 정보를 제대로 표시하지 않는 것을 구체적으로 언급하는 경우 적절한 og : attribute 메타 데이터가 추가되므로 WordPress 용 OpenGraph 플러그인을 살펴 봐야합니다. http://wordpress.org/extend/plugins/opengraph/

또한 헤더에 이와 같은 링크를 추가 할 수 있습니다

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

그리고 그것이 무엇을하는지보십시오.

그래도 물어봐야하는데 왜 이러는거야? 트위터는 크롤링하기 어렵 기 때문에이 URL 구조에 대한 주요 불이 붙었습니다. 말하지 말고 이유가 무엇인지에 대해 매우 궁금합니다. :)


1

내가 실제로 한 일은 WraithKenny가 제안한 해시 뱅을 사용하지 않는 것입니다.

$ 5.address.state (value) 메소드와 함께 jQuery 주소 플러그인을 사용하여 HTML5 상태 관리 및 $ .address.value (value) 메소드에 사용되는 웹 사이트의 기본 경로를 설정하여 현재를 설정하십시오. 깊은 연결 가치 나는 내가 원하는 것을 할 수 있었다.

http://visualise.ca/

게시물 (이미지 썸네일 클릭)은 AJAX를 통해로드되고 URL이 동시에 변경되며 게시물은 물론 동일한 퍼머 링크 구조를 사용하여 자체적으로 존재하므로 완전히 크롤링 할 수 있습니다.

유일한 문제는 이전 브라우저에서 확인해야 할 것으로 생각되지만 여전히 해시 뱅을 볼 것입니다.

저는 개발자가 아니기 때문에 이해하는데 많은 시간이 걸렸습니다. :-/ 그러나 나는 지금 결과에 아주 만족합니다 ;-)

jQuery 주소 : http://www.asual.com/jquery/address/


1
jQuery pjax 플러그인을 살펴보십시오. github.com/defunkt/jquery-pjax 그것은 매우 유사하지만, 여기 등, 당신을 위해 내용을로드 처리됩니다 것은 내가 스물 일레븐 자식 테마에 대한 그것으로 무슨 짓을했는지의 예 github.com/chrisguitarguy/pjaxy
chrisguitarguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.