2014-11-06 4 views
1

저는 AJAX를 사용하여 데이터베이스의 제품을 채우는 웹 사이트를 운영하고 있습니다. 이제이 사이트를 검색 자의 크롤링 가능 사이트로 만들고 싶습니다. 나는 구글 웹 마스터 Making AJAX Applications Crawlable에서이 게시물을 읽었습니다. 하지만 내 응용 프로그램에서이 작업을 수행하는 방법에 대한 단서가 없습니다. 난 그냥 코드의 큰 부분을 다시 작성하지 않고 내 응용 프로그램에 이것을 적용하는 방법을 볼 수 없습니다. 잘만되면 누군가 당신에게 나에게 약간의 팁을 줄 수 있기를 바랍니다.크롤러에 HTML 스냅 샷을 표시하는 방법

내 응용 프로그램
URL : 카테고리 1과 AJAX 호출의 www.mysite.com/productcategory/category1/
이 URL 쇼 제품은 HTML을 생성합니다. 특별한 URL 매개 변수는 없습니다. 페이지 매김이 있기 때문에 이렇게됩니다. 다음 페이지를 클릭하면 동일한 AJAX 스크립트가 실행되지만 이제는 다음 페이지에 대한 제품을 반환합니다. next page 버튼을
www.mysite.com/productcategory/category1/?page=2

클릭하면 POST에 의해 전송되는 get_products.ajax.php라는 스크립트 (페이지 = 2와 같은) 모든 매개 변수를 : URL은에 (jQuery를 역사에) 수정됩니다. 따라서 get_products.ajax.php에 대한 호출은 항상 동일하며 URL에 매개 변수가 없습니다. 또한 많은 정보가 세션에 저장되어 데이터베이스 쿼리 수를 제한합니다. 따라서 get_product.ajax.php이있는 제품 목록은 세션의 JSON 문자열입니다. 사이트가 크롤링하려면
을 크롤링

, 나는 AJAX 호출에 의해 생성 된 HTML의 스냅 샷을 생성해야합니다. 이 모든 것이 중요하지만 기본 AJAX 콘텐츠 대신 Google에이 콘텐츠를 어떻게 표시 할 수 있는지 알 수는 없습니다.

나는 모든 아침이 문제를 바라보고있어하지만 난 내 코드에서 상황을 타개하기 위해 필요로하는 곳에 난 그냥 볼 수 없습니다 ...

답변

0

가장 간단한 방법은 모든 페이지 위치에 <meta name="fragment" content="!"><head></head> 사이에 태그를 추가 당신은 AJAX 호출을 사용하고 있습니다. 귀하의 경우 이것은이 메타 태그를 렌더링에 사용되는 템플릿에 추가해야 함을 의미합니다. www.mysite.com/productcategory/category1/.

그러면 크롤러가 ?_escaped_fragment_= 인수로 페이지를 요청합니다. 귀하의 작업은이 매개 변수를 사용하여 요청을 처리하고 렌더링 된 페이지를 크롤러에 반환하는 것입니다.

렌더링을 위해 PhantomJS, https://prerender.io/ 또는 다른 것을 사용할 수 있습니다.

관련 문제