Axtarış motorları AngularJS tətbiqləri ilə necə işləyir?

Axtarış motorları və SEO ilə əlaqədar AngularJS tətbiqiylə iki məsələni görürəm:

1) Xüsusi etiketlərdə nə baş verir? Axtarış motorları bu etiketlərdə bütün məzmunu görmürlərmi? yəni, ehtimal edirəm

 <custom> <h1>Hey, this title is important</h1> </custom> 

<h1> , xüsusi etiketlər içərisində olsa da indeksləşdiriləcəkdir?


2) Axtarış motorlarını {{}} indexinqdən tam mənası ilə qarşısını almaq üçün bir yol varmı? yəni.

 <h2>{{title}}</h2> 

Bilirəm ki, bir şey edə bilərəm

 <h2 ng-bind="title"></h2> 

ancaq brauzerin başlığı görmək üçün həqiqətən də istəsəm nə olar? Server tərəfinin yeganə həlli?

658
21 нояб. luisfarzati tərəfindən təyin 21 noyabr 2012-11-21 20:44 '12 at 8:44 PM 2012-11-21 20:44
@ 16 cavab

May 2014-də yeniləmə

Google tarayıcıları indi javascripti yerinə yetirir - saytlarınızın Google tərəfindən necə təmin edildiyini daha yaxşı bilmək üçün Google Webmaster Tools istifadə edə bilərsiniz.

Orijinal cavab
Tətbiqinizi axtarış motorlarına optimallaşdırmaq istəyirsinizsə, təəssüf ki, brauzerin əvvəlcədən işlənmiş versiyasına xidmət etmək üçün heç bir yol yoxdur. Burada, ajax və javascript-ağır saytlar üçün Google tövsiyələri haqqında daha çox məlumat əldə edə bilərsiniz .

Bu bir seçimdirsə, mən bu məqaləni oxu təklif edirəm ki, SEO-nun server tərəfində göstərilməsi istifadə edilər.

Xüsusi etiketlərlə qarşılaşdıqda brauzerin nə etdiyinə əmin deyiləm.

389
23 нояб. Joakimbl tərəfindən verilmiş cavab 23 noyabr 2012-11-23 03:17 '12 at 3:17 2012-11-23 03:17

PushState və Precomposition istifadə edin

Bunu etmək üçün hazırkı (2015) yolu JavaScript pushState metodundan istifadə etməkdir.

PushState, səhifəni yenidən yükləmədən brauzerin yuxarıdakı URL'sini dəyişir. Bir sekmeli səhifə var deyirik. Nişanlar gizlədir və məzmunu görüntüləyir və məzmun dinamik olaraq AJAX istifadə edir və ya sadəcə ekranı quraşdırır: none and display: gizlətmək və sekmənin düzgün məzmununu göstərmək üçün blok.

Sekmeleri tıkladığınızda, ünvanı barda URL'yi yeniləmək üçün pushState istifadə edin. Sayfada görüntülendiğinde, görünen sekmeyi belirlemek üçün ünvan çubuğundaki değeri istifadə edin. Bucaqlı marşrutlaşdırma avtomatik olaraq sizin üçün bunu edəcək.

Kompleksləşmə

Bir səhifəli PushState (SPA) proqramına daxil olmaq üçün iki yol var.

  • İstifadəçinin PushState bağlantısını tıkladığı və məzmun AJAXed olduğu PushState vasitəsilə.
  • URL'ye birbaşa keçid.

Saytdakı ilk hit birbaşa URL ehtiva edir. PushState URL'yi yenilediğinden, sonrakı hitler yalnız içerikte AJAX olacaq.

Tarayıcılar, səhifədən əlaqələri toplayır və daha sonra emal üçün sıraya əlavə edirlər. Bu, bir axtarışda olan server üçün hər vuruşun birbaşa vurduğundan, Pushstate vasitəsilə hərəkət etməmələri deməkdir.

Əvvəlcədən təsəvvür, ilk olaraq JSON obyekti kimi serverdən birinci cavab yüklənməsinə birləşdirir. Bu, axtarış motorunun AJAX zəng etmədən səhifəni görüntüləməyə imkan verir.

Google, AJAX tələblərini yerinə yetirə bilməyəcəyinə dair bəzi dəlillər var. Bu barədə daha ətraflı oxuyun:

http://www.analog-ni.co/precomposing-a-spa-may-become-the-holy-grail-to-seo

Axtarış motorları javascripti oxuya və icra edə bilər

Google bir müddətdir JavaScript-ni təhlil edə bilib, ilk növbədə Google Spider üçün brauzer olmadan tam xüsusiyyətli bir brauzer kimi çıxış etmək üçün Chrome hazırladı. Bağlantıda düzgün bir href xərci varsa, yeni URL endekslenebilir. Başqa bir şey yoxdur.

Əlavəni tıklayaraq əlavə olaraq pushState-ə zəng vurarsa, sayt PushState vasitəsilə istifadəçi tərəfindən taşınabilir.

PushState URL'leri üçün Axtarış Motoru Desteği

PushState hazırda Google və Bing tərəfindən dəstəklənir.

Google

Matt Cutts SEO üçün PushState haqqında Paul İrlandiya sualını cavablandırır:

http://youtu.be/yiAF9VdvRPw

Burada Google spider üçün tam JavaScript dəstəyi elan edir:

http://googlewebmastercentral.blogspot.de/2014/05/understanding-web-pages-better.html

Nəticədə, Google PushState-i dəstəkləyir və PushState URL-lərini indeksləşdirir.

Googlebot kimi google webmaster tools da baxın. JavaScript (buruq daxil olmaqla) tamamlandığını görürsünüz.

Bing

Bing'in 2013 Mart ayından etibarən olduqca PushState URL'leri üçün dəstək bildirişi:

http://blogs.bing.com/webmaster/2013/03/21/search-engine-optimization-best-practices-for-ajax-urls/

HashBangs # istifadə etməyin!

Hashbang URL'ləri çirkin bir stop idi və geliştiricinin saytın əvvəlcədən hazırlanmış bir versiyasını xüsusi yerə təqdim etməsini tələb edirdi. Onlar hələ də işləyir, amma onları istifadə etmək lazım deyil.

border=0

Hashbang URL'leri belə görünür:

domain.com/#!path/to/resource

Bu kimi bir meta tag ilə əlaqələndiriləcək:

<meta name="fragment" content="!">

Google bu forma onları göstərməyəcək, lakin sitenin statik versiyasını _escaped_fragments_ URL'sindən çəkəcək və onu indeksləşdirəcəkdir.

Pushstate URL'ləri normal bir URL kimi görünür:

domain.com/path/to/resource

Fərqi açar ki, bunları sizin üçün idarə edir, JavaScript ilə əlaqəli sənəd dəyişir.

PushState URL-lərindən istifadə etmək istəyirsinizsə (və bunu edə bilərsən) bütün köhnə URL və hash-stil meta etiketlərini çıxarın və konfiqurasiya blokunuzda HTML5 rejimini sadəcə açın.

Sitenizi test edin

Google Webmaster Tools, URL'yi google olaraq almaq və Google kimi javascripti göstərməyə imkan verən bir vasitə var.

https://www.google.com/webmasters/tools/googlebot-fetch

Açısal bir URL PushState yaradılması

Həqiqi URL'leri açılı, # prefiks olmayanları yaratmaq üçün HTML5 rejimini $ locationProvider obyektinə təyin edin.

 $locationProvider.html5Mode(true); 

Server tərəfi

Gerçek URL'leri kullandığınız üçün, eyni şablon (artı bazı önceden yapılandırılmış içerik) bütün geçerli URL'ler üçün sunucu tarafından gönderilmesini təmin etməlisiniz. Bunu necə etdiyiniz serverinizin arxitekturasına bağlıdır.

Sayt haqda məlumat

Tətbiq işarələmə və ya hərəkət etmək kimi qeyri-adi naviqasiya formalarını istifadə edə bilər. Google tətbiqinizi idarə etməsi üçün, tətbiqinizin cavab verdiyi bütün URL-lərin sadə bir siyahısı olan bir Sayt haqda məlumat yaratmağı təklif edirəm. Siz default olaraq yerləşdirə bilərsiniz (/ sitemap və ya /sitemap.xml) və ya webmaster vasitələrindən istifadə edərək Google-a bildirin.

Hər halda bir sitemap olması yaxşı fikirdir.

Brauzer dəstəyi

Puşstate IE10-da işləyir. Köhnə brauzerlərdə, açısal avtomatik olaraq hash stil URL'lərinə dönər.

Demo səhifə

Aşağıdakı məzmun əvvəlcədən kompozisiya pusquşusu URL istifadə edərək göstərilir:

http://html5.gingerhost.com/london

Kontrol edə bildiyiniz kimi, bu linkdə məzmun endekslenir və Google-da görünür.

Xidmət 404 və 301 Başlıq Vəziyyəti Kodları

Axtarış motoru her zaman istekleriniz üçün sunucuya hit olacağından, sunucunuzdan başlıq statusu kodları sunabilir ve Google-ı onları beklemesini bekleyebilirsiniz.

462
23 апр. cavab 23 dəqiqə üstündür . 2014-04-23 16:10 '14 'da 16:10 2014-04-23 16:10

Nəhayət AngularJS və SEO-nu müəyyən edək

Google, Yahoo, Bing və digər axtarış motorları, ənənəvi tarayıcılardan istifadə edərək interneti ənənəvi şəkildə tarar. HTML səhifələrində HTML-ləri tararkən, yol boyunca məlumat toplayan robotlar işə salırlar. Onlar maraqlı sözlər ehtiva edir və digər səhifələrə (bu əlaqələr, onların sayı və sayı SEO ilə oynayır) digər əlaqələri axtarmağa kömək edir.

Niyə axtarış motorları javascript saytları ilə məşğul olmur?

Bu sualın cavabı, axtarış robotlarının brauzer olmadan brauzerlər olmadan işləməsi ilə bağlıdır və onlar tez-tez javascript səhifəsini göstərmək üçün javascript göstərmə mexanizminə malik deyil. Ən çox statik səhifələr, onların məzmunu zaten mövcud olduğundan, onların səhifəsini göstərən JavaScript haqqında qayğısına qalmadığından, bu çox səhifələr üçün işləyir.

Bununla nə edilə bilər?

Xoşbəxtlikdən, böyük sayt skanerlər JavaScript saytlarının taranmasını təmin etməyə imkan verən bir mexanizm həyata keçirməyə başladılar, lakin bizim saytımızda dəyişikliklər tələb edir .

hashPrefix #! sadə bir əvəzinə # , müasir axtarış motorları #! əvəzinə _escaped_fragment_ yerinə istifadə tələbini dəyişdirəcəkdir #! . (HTML5 rejimində, yəni bir hash prefiksı olmadan əlaqələr olduğumuzda, biz eyni funksiyanı backend-də User Agent başlığına baxaraq həyata keçirə bilərik).

Yəni bu kimi görünən müntəzəm bir brauzerin tələbi deyil:

http://www.ng-newsletter.com/#!/signup/page

Axtarış motoru istifadə edərək səhifəni axtaracaq

http://www.ng-newsletter.com/?_escaped_fragment_=/signup/page

ngRoute dən ngRoute metoddan istifadə edərək bucaq tətbiqlərimizin hash prefiksini təyin edə bilərsiniz:

 angular.module('myApp', []) .config(['$location', function($location) { $location.hashPrefix('!'); }]); 

html5Mode istifadə html5Mode , meta etiketinin köməyi ilə tətbiq etməmiz lazımdır:

 <meta name="fragment" content="!"> 

Unutmayın, $location xidmətindən istifadə edərək, html5Mode() qura html5Mode() :

 angular.module('myApp', []) .config(['$location', function($location) { $location.html5Mode(true); }]); 

Axtarış mühərriki işlənməsi

Statik HTML kimi axtarış motorlarına kontentin gerçək çatdırılması ilə necə məşğul olacağımızı müəyyənləşdirmək üçün bir çox imkanlarımız var. Ardıcıllığı özümüzə yerləşdirə bilərik, bizdən fon fondu funksiyasını yerinə yetirmək üçün xidmətdən istifadə edə bilərik, kontentin ötürülməsi üçün proxy istifadə edə bilərik və s. Bir neçə variantları nəzərdən keçirək:

özünü qəbul etmişdir

Brauzer olmadan phantomjs və ya zombiejs kimi brauzer olmadan brauzerdən istifadə edərək, saytın görünüşünü göstərilən məlumatlarla birlikdə HTML-də saxlayaraq, öz saytımızı tarama işini idarə edə bilərik. Axtarış sorğusunda sorğu sətrini ?_escaped_fragment_ , ?_escaped_fragment_ , ?_escaped_fragment_ - ?_escaped_fragment_ statik bir anlık görüntüsünü təqdim edə bilərik. Bu, bizim sitemizi ortada şərti məntiqlə təmin edən bir backend tələb etməmizi tələb edir. Prerender.io backend kimi bir şey özümüzü idarə etmək üçün başlanğıc nöqtəsi olaraq istifadə edə bilərik. Əlbəttə ki, hələ proksi və emal parçaları işləməyimiz lazımdır, amma bu yaxşı bir başlanğıcdır.

Pullu xidmətlə

Axtarış motorunda məzmun əldə etmək üçün ən asan və ən sürətli şəkildə Brombone , seo xidmətindən istifadə etməkdir . js , seo4ajaxprerender.io sizin üçün yuxarıda göstərilən məzmunun yaxşı nümunəsidir. Bir server / proxy ilə məşğul olmaq istəmədiyimiz zaman yaxşı bir seçimdir. Bundan əlavə, tez-tez çox sürətli olur.

Angular və SEO haqqında daha ətraflı məlumat üçün biz bu məsələ ilə bağlı ətraflı məlumat üçün http://www.ng-newsletter.com/posts/serious-angular-seo.html ünvanından yazdıq və bu kitabda daha ətraflı təsvir etdik. : AngularJS haqqında tam kitab . Ng- books.com saytında yoxlayın.

104
24 дек. Cavab verən yazıçı 24 dekabr. 2013-12-24 23:05 '13 at 11:05 PM 2013-12-24 23:05

Bir blog ilində bir AngularJS SEO veb yaratmaq dərslik həqiqətən olmalıdır. Bu bucaq sənədlərində təsvir edilən bütün addımlar sizə yönəldəcəkdir. http://www.yearofmoo.com/2012/11/angularjs-and-seo.html

Bu metodu istifadə edərək, axtarış mühərriki xüsusi etiketlərin əvəzinə genişləndirilmiş HTML görür.

54
28 нояб. Cavab Brad Green 28 noyabr tarixində verilir. 2012-11-28 00:55 '12 at 0:55 2012-11-28 00:55

Bu dramatik şəkildə dəyişdi.

http://searchengineland.com/bing-offers-recommendations-for-seo-friendly-ajax-suggests-html5-pushstate-152946

Əgər istifadə edirsinizsə: $ LocationProvider.html5Mode (true); siz xüsusi edirsiniz.

Daha çox səhifəni göstərmək.

40
20 февр. cavab 20 fevralda istifadəçi3330270 tərəfindən verilir. 2014-02-20 01:35 '14 da 1:35 2014-02-20 01:35

Bu sualdan soruşulduğundan hər şey bir az dəyişdi. İndi Google-a AngularJS saytınızı göstərməyə imkan verən variantlar var. Mən tapdığım en asan variant, http://prerender.io saytından axtarış motorları üçün axtarış edən bir pulsuz xidmətdən istifadə etməkdir. Demək olar ki, bütün web server platformalarında dəstəklənir. Mən bu yaxınlarda onları istifadə etməyə başladım və dəstək də böyükdür.

Onlarla əlaqəm yoxdur, xoşbəxt bir istifadəçi gəlir.

17
26 нояб. Cavab Ketan tərəfindən 26 noyabrda verilir. 2013-11-26 19:25 '13 da 19:25 2013-11-26 19:25

Açarların öz veb saytında axtarış motorları üçün sadələşdirilmiş məzmun təklif olunur: http://docs.angularjs.org/?_escaped_fragment_=/tutorial/step_09

Açar tətbiqiniz Node.js / Express-JSON api, məsələn, /api/path/to/resource . Yəqin ki, istənilən istəkləri ?_escaped_fragment_ dan /api/path/to/resource.html və JSON məlumatlarını əvəz etməmək əvəzinə HTML məzmun şablonunun göstərilməsi üçün məzmun müzakirələrindən istifadə edə bilərsiniz.

Yalnızca açar yollarınız REST API ilə 1: 1 uyğun olmalıdır.

EDIT . Anladım ki, bu, həqiqətən, REST api-yə korlaya bilər və mən bunu təbii ola biləcəyini istisna etmirəm.

Bunun əvəzinə, robot dostu məzmununuz üçün tamamilə fərqli marşrut və nəzarətçi dəsti istifadə edə bilərsiniz. Lakin sonra Node / Express bütün marşrutları və AngularJS nəzarətçiləri dublikat.

Mən bir brauzer olmadan brauzer olmadan anlar almaq qərarına gəldim, baxmayaraq ki, bu, mükəmməldən bir qədər az olduğunu hiss edirəm.

9
21 нояб. cavab 21 noyabr Kevin C tərəfindən verilir. 2013-11-21 04:25 '13 'da 4:25 2013-11-21 04:25
8
16 марта '14 в 16:56 2014-03-16 16:56 Cavab pixparker tərəfindən verilir 16 mart '14 16:56 2014-03-16 16:56
7
15 окт. Cavab verildi Thor Oct 15 2015-10-15 13:00 '15 saat 13:00 'da, 2015-10-15 13:00' də

Google Crawlable Ajax Spec, burada digər cavablarda göstərildiyi kimi əsasən cavabdır.

Əgər digər axtarış motorları və sosial botlar eyni problemlərlə necə maraqlanırsa, burada sənət dövlətini yazdım: http://blog.ajaxsnapshots.com/2013/11/googles-crawlable-ajax-specification.html

Təcrübəçi Ajax Spec-in xidmət kimi fəaliyyət göstərən bir şirkət olan https://ajaxsnapshots.com - bu hesabatdakı məlumat bizim jurnallardan müşahidələrə əsaslanır.

6
22 янв. Robert AJS tərəfindən verilmiş cavab 22 yanvar 2014-01-22 01:53 '14 da 1:53 2014-01-22 01:53

Sizin angularjs tətbiqinizi (nginx serverinin altında) axtarılacaq bir məqalə yazdım: http://senior-java-developer.com/html5angularjsnginx-crawlable-application/

4
02 дек. Alexey Kutuzov tərəfindən cavab 02 Dek 2017-12-02 23:53 '17 'da 11:53' də 2017-12-02 23:53

Bəzilərinizin əksəriyyətini əhatə edəcək bir zərif həll tapdım. Bu barədə ilk yazdığım və StackOverflow-dan buna bənzər bir başqa sual verdim.

FYI bu həll də Javascript axtarışçı tərəfindən seçilməmiş halda hard-kodlu backup tags daxildir. Bunu açıqca göstərmədim, amma URL-i düzgün dəstəkləmək üçün HTML5 rejimini aktivləşdirməlisiniz.

Həm də qeyd edin: bunlar tam fayllar deyil, müvafiq olanların vacib hissələridir. Başqa yerlərdə tapıla biləcək direktivlər, xidmətlər və s. Üçün bir şablon yazmağa kömək etsəniz. Hər halda, burada gedir ...

app.js

Burada marşrutlarınızın hər biri üçün xüsusi metadata (ad, təsviri, və s.)

 $routeProvider .when('/', { templateUrl: 'views/homepage.html', controller: 'HomepageCtrl', metadata: { title: 'The Base Page Title', description: 'The Base Page Description' } }) .when('/about', { templateUrl: 'views/about.html', controller: 'AboutCtrl', metadata: { title: 'The About Page Title', description: 'The About Page Description' } }) 

metadata-service.js (xidmət)

İstifadəçi metadata seçimlərini müəyyən edir və ya zəmanət kimi standart dəyərlərdən istifadə edir.

 var self = this; // Set custom options or use provided fallback (default) options self.loadMetadata = function(metadata) { self.title = document.title = metadata.title || 'Fallback Title'; self.description = metadata.description || 'Fallback Description'; self.url = metadata.url || $location.absUrl(); self.image = metadata.image || 'fallbackimage.jpg'; self.ogpType = metadata.ogpType || 'website'; self.twitterCard = metadata.twitterCard || 'summary_large_image'; self.twitterSite = metadata.twitterSite || '@fallback_handle'; }; // Route change handler, sets the route defined metadata $rootScope.$on('$routeChangeSuccess', function (event, newRoute) { self.loadMetadata(newRoute.metadata); }); 

metaproperty.js (direktiv)

Təqdimat üçün metadata xidmətinin nəticələrini paketləşdirir.

 return { restrict: 'A', scope: { metaproperty: '@' }, link: function postLink(scope, element, attrs) { scope.default = element.attr('content'); scope.metadata = metadataService; // Watch for metadata changes and set content scope.$watch('metadata', function (newVal, oldVal) { setContent(newVal); }, true); // Set the content attribute with new metadataService value or back to the default function setContent(metadata) { var content = metadata[scope.metaproperty] || scope.default; element.attr('content', content); } setContent(scope.metadata); } }; 

index.html

Hər hansı bir Javascripti qaldırmaq mümkün olmayan skanerlər üçün əvvəllər qeyd edilmiş sabit kodlu tərs tags ilə tamamlayın.

 <head> <title>Fallback Title</title> <meta name="description" metaproperty="description" content="Fallback Description"> <!-- Open Graph Protocol Tags --> <meta property="og:url" content="fallbackurl.com" metaproperty="url"> <meta property="og:title" content="Fallback Title" metaproperty="title"> <meta property="og:description" content="Fallback Description" metaproperty="description"> <meta property="og:type" content="website" metaproperty="ogpType"> <meta property="og:image" content="fallbackimage.jpg" metaproperty="image"> <!-- Twitter Card Tags --> <meta name="twitter:card" content="summary_large_image" metaproperty="twitterCard"> <meta name="twitter:title" content="Fallback Title" metaproperty="title"> <meta name="twitter:description" content="Fallback Description" metaproperty="description"> <meta name="twitter:site" content="@fallback_handle" metaproperty="twitterSite"> <meta name="twitter:image:src" content="fallbackimage.jpg" metaproperty="image"> </head> 

Bu, mühüm axtarış mühərriki istifadə vəziyyətlərini əhəmiyyətli dərəcədə təsir edə bilər. Sosial şəbəkə tarayıcıları üçün tam dinamik göstərilməsini istəyirsinizsə (Javascript dəstəyinə baxmayaraq) hələ də bəzi digər cavablarda göstərilən əvvəlcədən göstərilən xidmətlərdən birini istifadə etməlisiniz.

Bu kömək edir!

3
15 дек. Cavab 15 dekabrda Andrey tərəfindən verilir . 2015-12-15 19:56 '15 saat 19:56 'da 2015-12-15 19:56

PreRender kimi bir şey istifadə edin, axtarış motorları onu indeksləşdirmək üçün sitenizde statik səhifələr yaradır.

Burada hansı platformaların mövcud olduğunu görə bilərsiniz: https://prerender.io/documentation/install-middleware#asp-net

2
23 февр. cavab 23 fevralda NicoJuicy tərəfindən verilir. 2015-02-23 13:31 '15 at 1:31 pm 2015-02-23 13:31

Tarayıcılar (və ya botlar) veb səhifələrində HTML səhifələrinin məzmununu taramaq üçün nəzərdə tutulmuşdur, ancaq AXAX əməliyyatları asinxronlaşdırılan məlumat nümunələri üçün görə, bu, problem yaratdı, çünki səhifəni göstərmək və dinamik məzmunu göstərmək üçün bir müddət vaxt tələb olunur. Bənzər şəkildə, AngularJS , Google axtarışçıları üçün problem yaradan asinxron modeli də istifadə edir.

Bəzi developers real data olan əsas html-səhifələr yaradır və tarama zamanı bu səhifəni server tərəfdən saxlayırlar. Həmin səhifələri PhantomJS ilə PhantomJS (Google axtarışları #! Saytımızın URL- _escaped_fragment_ sonra #! hər şeydən sonra aparır və bunu _escaped_fragment_ sorğu _escaped_fragment_ ) ilə _escaped_fragment_ . Daha ətraflı məlumat üçün blogu oxuyun.

1
05 окт. Cavab 05 oktyabrda Rubi saini verilir . 2015-10-05 15:00 '15 saat 15:00 'də 2015-10-05 15:00' də

Angular Universal ilə tam proqram kimi görünən bir tətbiq üçün açılış səhifələrini yarada və sonra arxa açılan tətbiqini yükləyə bilərsiniz.
Angular Universal генерирует чистый HTML-код, который означает не-javascript-страницы на стороне сервера и обслуживает их без задержки. Таким образом, вы можете иметь дело с любым искателем, ботом и пользователем (у которого уже есть низкая скорость процессора и скорость сети). Затем вы можете перенаправить их по ссылкам/кнопкам в свое фактическое приложение Angular, которое уже загружено за ним. Это решение рекомендуется на официальном сайте. - Дополнительная информация о SEO и Angular Universal -

1
ответ дан erginduran 17 мая '17 в 1:30 2017-05-17 01:30

Сканерам не нужен богатый признанный стильный gui, они хотят видеть контент , поэтому вам не нужно давать им снимок страницы, созданной для людей.

Мое решение: до дать сканеру то, что хочет искатель :

Вы должны думать о том, чего хочет искатель, и дать ему только это.

СОВЕТ не путается со спиной. Просто добавьте немного серверного фронтального просмотра, используя тот же API

0
ответ дан pykiss 12 февр. '14 в 10:26 2014-02-12 10:26

Другие вопросы по меткам или Задайте вопрос