PushState 및 사전 구성 사용
이를 수행하는 현재 (2015) 방법은 JavaScript pushState 메소드를 사용하는 것입니다.
PushState는 페이지를 다시로드하지 않고 상단 브라우저 표시 줄의 URL을 변경합니다. 탭이 포함 된 페이지가 있다고 가정하십시오. 탭은 컨텐츠를 숨기고 표시하며 AJAX를 사용하거나 단순히 display : none 및 display : block을 설정하여 올바른 탭 컨텐츠를 숨기고 표시하여 컨텐츠를 동적으로 삽입합니다.
탭을 클릭하면 pushState를 사용하여 주소 표시 줄에서 URL을 업데이트하십시오. 페이지가 렌더링 될 때 주소 표시 줄의 값을 사용하여 표시 할 탭을 결정하십시오. 각도 라우팅은 자동으로이를 수행합니다.
사전 조성
PushState 단일 페이지 앱 (SPA)을 누르는 방법에는 두 가지가 있습니다.
- PushState를 통해 사용자가 PushState 링크를 클릭하면 컨텐츠가 AJAX됩니다.
- URL을 직접 누르십시오.
사이트의 초기 조회에는 URL을 직접 누르는 것이 포함됩니다. PushState가 URL을 업데이트함에 따라 후속 조회는 단순히 콘텐츠의 AJAX입니다.
크롤러는 페이지에서 링크를 수집 한 후 나중에 처리 할 수 있도록 대기열에 추가합니다. 이는 크롤러의 경우 서버의 모든 조회가 직접 조회이며 Pushstate를 통해 이동하지 않음을 의미합니다.
사전 구성은 초기 페이로드를 서버의 첫 번째 응답 (가능한 경우 JSON 오브젝트)으로 번들합니다. 이를 통해 AJAX 호출을 실행하지 않고도 검색 엔진이 페이지를 렌더링 할 수 있습니다.
Google이 AJAX 요청을 실행하지 않을 수 있다는 증거가 있습니다. 여기에 더 많은 것들이 있습니다 :
https://web.archive.org/web/20160318211223/http://www.analog-ni.co/precomposing-a-spa-may-become-the-holy-grail-to-seo
검색 엔진은 JavaScript를 읽고 실행할 수 있습니다
구글은 한동안 자바 스크립트를 파싱 할 수 있었기 때문에 구글 스파이더의 완전한 기능을 갖춘 헤드리스 브라우저 역할을하기 위해 원래 크롬을 개발했다. 링크에 유효한 href 속성이 있으면 새 URL을 색인화 할 수 있습니다. 더 이상 할 일이 없습니다.
링크를 클릭하면 pushState 호출이 트리거되면 사용자가 PushState를 통해 사이트를 탐색 할 수 있습니다.
PushState URL에 대한 검색 엔진 지원
PushState는 현재 Google 및 Bing에서 지원됩니다.
구글
SEO에 대한 PushState에 대한 Paul Irish의 질문에 응답하는 Matt Cutts가 있습니다.
http://youtu.be/yiAF9VdvRPw
스파이더에 대한 완전한 JavaScript 지원을 발표 한 Google은 다음과 같습니다.
http://googlewebmastercentral.blogspot.de/2014/05/understanding-web-pages-better.html
결론은 Google이 PushState를 지원하고 PushState URL을 색인화한다는 것입니다.
Google 웹 마스터 도구의 Googlebot으로 가져 오기도 참조하십시오. JavaScript (Angular 포함)가 실행되는 것을 볼 수 있습니다.
빙
다음은 2013 년 3 월자 예쁜 PushState URL 지원에 대한 Bing의 발표입니다.
http://blogs.bing.com/webmaster/2013/03/21/search-engine-optimization-best-practices-for-ajax-urls/
HashBangs #을 사용하지 마십시오!
Hashbang URL은 개발자가 특별한 위치에 사전 렌더링 된 버전의 사이트를 제공해야하는 추악한 스탑 갭입니다. 그들은 여전히 작동하지만 사용할 필요는 없습니다.
해시 방 URL은 다음과 같습니다.
domain.com/#!path/to/resource
이것은 다음과 같은 메타 태그와 쌍을 이룰 것입니다 :
<meta name="fragment" content="!">
Google은이 형식으로 색인을 생성하지 않지만 대신 _escaped_fragments_ URL에서 정적 버전의 사이트를 가져와 색인을 생성합니다.
푸시 스테이트 URL은 일반 URL과 같습니다.
domain.com/path/to/resource
차이점은 Angular는 JavaScript에서 처리하는 document.location의 변경 사항을 가로 채어 처리합니다.
PushState URL을 사용하고 싶을 경우 모든 이전 해시 스타일 URL과 메타 태그를 꺼내고 구성 블록에서 HTML5 모드를 활성화하면됩니다.
사이트 테스트
Google 웹 마스터 도구에는 이제 URL을 Google로 가져오고 Google이 렌더링하는대로 JavaScript를 렌더링 할 수있는 도구가 포함되어 있습니다.
https://www.google.com/webmasters/tools/googlebot-fetch
각도로 PushState URL 생성
접두사 # 개가 아닌 Angular로 실제 URL을 생성하려면 $ locationProvider 객체에서 HTML5 모드를 설정하십시오.
$locationProvider.html5Mode(true);
서버 측
실제 URL을 사용하고 있으므로 유효한 모든 URL에 대해 동일한 템플릿 (일부 사전 구성 컨텐츠)이 서버에서 제공되도록해야합니다. 이를 수행하는 방법은 서버 아키텍처에 따라 다릅니다.
사이트 맵
앱에서 호버 또는 스크롤과 같은 비정상적인 탐색 형식을 사용할 수 있습니다. Google이 앱을 구동 할 수 있도록 앱이 응답하는 모든 URL의 간단한 목록 인 사이트 맵을 만드는 것이 좋습니다. 기본 위치 (/ sitemap 또는 /sitemap.xml)에 배치하거나 웹 마스터 도구를 사용하여 Google에 알려줄 수 있습니다.
어쨌든 사이트 맵을 갖는 것이 좋습니다.
브라우저 지원
Pushstate는 IE10에서 작동합니다. 구형 브라우저에서는 Angular가 자동으로 해시 스타일 URL로 대체됩니다.
데모 페이지
다음 컨텐츠는 사전 구성이 포함 된 pushstate URL을 사용하여 렌더링됩니다.
http://html5.gingerhost.com/london
확인할 수 있듯이이 링크 에서 콘텐츠가 색인되어 Google에 표시됩니다.
404 및 301 헤더 상태 코드 제공
검색 엔진은 모든 요청에 대해 항상 서버에 도달하므로 서버에서 헤더 상태 코드를 제공하고 Google에서이를 확인할 수 있습니다.