html5 - खोज इंजन AngularJS अनुप्रयोगों से कैसे निपटते हैं?




seo search-engine (10)

चलिए AngularJS और एसईओ के बारे में निश्चित हो

Google, याहू, बिंग, और अन्य खोज इंजन पारंपरिक क्रॉलरों का उपयोग करके पारंपरिक तरीकों से वेब को क्रॉल करते हैं। वे रोबोट चलाते हैं जो एचटीएमएल को वेब पेजों पर क्रॉल करते हैं, जिस तरह से जानकारी इकट्ठा करते हैं। वे दिलचस्प शब्द रखते हैं और अन्य पृष्ठों के अन्य लिंक ढूंढते हैं (ये लिंक, उनमें से राशि और उनमें से संख्या एसईओ के साथ खेलने में आती है)।

तो क्यों खोज इंजन जावास्क्रिप्ट साइटों के साथ सौदा नहीं करते?

जवाब इस तथ्य के साथ करना है कि खोज इंजन रोबोट हेडलेस ब्राउज़र के माध्यम से काम करते हैं और वे अक्सर किसी पृष्ठ के जावास्क्रिप्ट को प्रस्तुत करने के लिए जावास्क्रिप्ट प्रतिपादन इंजन नहीं रखते हैं। यह अधिकांश पृष्ठों के लिए काम करता है क्योंकि अधिकांश स्थैतिक पृष्ठ जावास्क्रिप्ट को उनके पृष्ठ को प्रस्तुत करने की परवाह नहीं करते हैं, क्योंकि उनकी सामग्री पहले से ही उपलब्ध है।

इस विषय में क्या किया जा सकता है?

सौभाग्य से, बड़ी साइटों के क्रॉलर ने एक तंत्र को लागू करना शुरू कर दिया है जो हमें हमारी जावास्क्रिप्ट साइटों को क्रॉल करने की अनुमति देता है, लेकिन इसके लिए हमें हमारी साइट में बदलाव लागू करने की आवश्यकता है

अगर हम अपने hashPrefix को #! होने के लिए बदलते हैं #! बस # बजाय, तो आधुनिक खोज इंजन #! बजाय _escaped_fragment_ का उपयोग करने के अनुरोध को बदल देंगे #! । (एचटीएमएल 5 मोड के साथ, यानी जहां हमारे पास हैश उपसर्ग के बिना लिंक हैं, हम अपने बैकएंड में User Agent हेडर को देखकर इस सुविधा को कार्यान्वित कर सकते हैं)।

ऐसा कहने के लिए, एक सामान्य ब्राउज़र से अनुरोध के बजाय ऐसा लगता है:

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

एक खोज इंजन पृष्ठ को इस प्रकार खोजेगा:

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

हम ngRoute से ngRoute विधि का उपयोग करके हमारे कोणीय ऐप्स के हैश उपसर्ग को सेट कर सकते हैं:

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

और, अगर हम html5Mode का उपयोग कर रहे हैं, तो हमें मेटा टैग का उपयोग करके इसे लागू करने की आवश्यकता होगी:

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

अनुस्मारक, हम $location सेवा सेवा के साथ html5Mode() सेट कर सकते हैं:

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

खोज इंजन को संभालना

हमारे पास यह निर्धारित करने के कई अवसर हैं कि हम वास्तव में खोज इंजन को स्थिर HTML के रूप में सामग्री वितरित करने के साथ कैसे निपटेंगे। हम खुद को बैकएंड होस्ट कर सकते हैं, हम अपने लिए बैक-एंड होस्ट करने के लिए एक सेवा का उपयोग कर सकते हैं, हम सामग्री वितरित करने के लिए प्रॉक्सी का उपयोग कर सकते हैं आदि। चलो कुछ विकल्प देखें:

स्व की मेजबानी की

हम एक हेडलेस ब्राउज़र का उपयोग करके अपनी साइट को क्रॉल करने से निपटने के लिए एक सेवा लिख ​​सकते हैं, जैसे फ़ैंटोमज या ज़ोंबीज, पृष्ठ के स्नैपशॉट को डेटा के साथ ले जाकर और HTML के रूप में संग्रहीत करना। जब भी हम क्वेरी स्ट्रिंग देखते हैं ?_escaped_fragment_ एक खोज अनुरोध में, हम केवल जेएस के माध्यम से प्री-रेंडर पेज के बजाय पृष्ठ के स्थिर HTML स्नैपशॉट को वितरित कर सकते हैं। इसके लिए हमें एक बैकएंड प्राप्त करने की आवश्यकता है जो हमारे पृष्ठों को बीच में सशर्त तर्क के साथ प्रदान करता है। हम prerender.io's बैकएंड जैसे कुछ को अपने आप को चलाने के लिए शुरुआती बिंदु के रूप में उपयोग कर सकते हैं। बेशक, हमें अभी भी प्रॉक्सीइंग और स्निपेट हैंडलिंग को संभालने की ज़रूरत है, लेकिन यह एक अच्छी शुरुआत है।

एक सशुल्क सेवा के साथ

खोज इंजन में सामग्री प्राप्त करने का सबसे आसान और सबसे तेज़ तरीका एक सेवा का उपयोग करना है Brombone , seo.js , seo4ajax , और prerender.io's इनके अच्छे उदाहरण हैं जो आपके लिए उपरोक्त सामग्री प्रतिपादन की मेजबानी करेंगे। यह उन समयों के लिए एक अच्छा विकल्प है जब हम सर्वर / प्रॉक्सी चलाने से निपटना नहीं चाहते हैं। इसके अलावा, यह आमतौर पर सुपर त्वरित है।

कोणीय और एसईओ के बारे में अधिक जानकारी के लिए, हमने http://www.ng-newsletter.com/posts/serious-angular-seo.html पर एक व्यापक ट्यूटोरियल लिखा और हमने इसे हमारी पुस्तक एनजी-बुक में और भी विस्तृत किया : AngularJS पर पूर्ण पुस्तक । इसे ng-book.com पर ng-book.com

मैं खोज इंजन और एसईओ के बारे में AngularJS आवेदन के साथ दो मुद्दों को देखता हूं:

1) कस्टम टैग के साथ क्या होता है? क्या खोज इंजन उन टैग के भीतर पूरी सामग्री को अनदेखा करते हैं? यानी मान लीजिए मेरे पास है

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

कस्टम टैग के अंदर होने के बावजूद <h1> अनुक्रमित किया जाएगा?


2) क्या अनुक्रमण के खोज इंजन से बचने का कोई तरीका है {{}} सचमुच बांधता है? अर्थात

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

मुझे पता है कि मैं कुछ ऐसा कर सकता था

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

लेकिन क्या होगा यदि मैं वास्तव में क्रॉलर को शीर्षक "देखने" देना चाहता हूं? क्या सर्वर-साइड एकमात्र समाधान प्रस्तुत करता है?


पुशस्टेट और प्रीकंपोजिशन का प्रयोग करें

ऐसा करने के लिए वर्तमान (2015) तरीका जावास्क्रिप्ट pushState विधि का उपयोग कर रहा है।

पुशस्टेट पृष्ठ को फिर से लोड किए बिना शीर्ष ब्राउज़र बार में यूआरएल बदलता है। मान लें कि आपके पास टैब वाला एक पृष्ठ है। टैब छिपाते हैं और सामग्री दिखाते हैं, और सामग्री को गतिशील रूप से डाला जाता है, या तो AJAX का उपयोग करके या बस डिस्प्ले सेट करके: कोई भी नहीं और प्रदर्शित करता है: सही टैब सामग्री को छिपाने और दिखाने के लिए ब्लॉक करें।

जब टैब क्लिक किए जाते हैं, तो पता बार में यूआरएल अपडेट करने के लिए पुशस्टेट का उपयोग करें। जब पृष्ठ प्रस्तुत किया जाता है, तो यह निर्धारित करने के लिए कि कौन सा टैब दिखाना है, पता बार में मान का उपयोग करें। कोणीय मार्ग स्वचालित रूप से आपके लिए यह करेगा।

precomposition

पुशस्टेट सिंगल पेज ऐप (एसपीए) को मारने के दो तरीके हैं

  1. पुशस्टेट के माध्यम से, जहां उपयोगकर्ता पुशस्टेट लिंक पर क्लिक करता है और सामग्री में AJAXed है।
  2. सीधे यूआरएल मारकर।

साइट पर प्रारंभिक हिट में यूआरएल को सीधे मारना शामिल होगा। बाद की हिट सामग्री में AJAX बस होगी क्योंकि पुशस्टेट यूआरएल अपडेट करता है।

क्रॉलर एक पृष्ठ से लिंक फसल तो बाद में प्रसंस्करण के लिए उन्हें एक कतार में जोड़ें। इसका मतलब है कि क्रॉलर के लिए, सर्वर पर हर हिट प्रत्यक्ष हिट होती है, वे पुशस्टेट के माध्यम से नेविगेट नहीं करते हैं।

प्रीकंपोजिशन सर्वर से पहली प्रतिक्रिया में प्रारंभिक पेलोड को संभवतः एक 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

खोज इंजन जावास्क्रिप्ट को पढ़ और निष्पादित कर सकते हैं

Google कुछ समय के लिए जावास्क्रिप्ट को पार्स करने में सक्षम रहा है, यही कारण है कि उन्होंने मूल रूप से क्रोम विकसित किया, Google मकड़ी के लिए एक पूर्ण विशेषीकृत हेडलेस ब्राउज़र के रूप में कार्य करने के लिए। यदि किसी लिंक में वैध href विशेषता है, तो नया यूआरएल अनुक्रमित किया जा सकता है। करने के लिए और कुछ नहीं है।

यदि एक लिंक पर क्लिक करने से पुशस्टेट कॉल ट्रिगर होता है, तो उपयोगकर्ता को पुशस्टेट के माध्यम से उपयोगकर्ता द्वारा नेविगेट किया जा सकता है।

पुशस्टेट यूआरएल के लिए खोज इंजन समर्थन

पुशस्टेट वर्तमान में Google और Bing द्वारा समर्थित है।

गूगल

यहां मैट कर्ट्स एसईओ के लिए पुशस्टेट के बारे में पॉल आयरिश के सवाल का जवाब दे रहा है:

http://youtu.be/yiAF9VdvRPw

Google ने स्पाइडर के लिए पूर्ण जावास्क्रिप्ट समर्थन की घोषणा की है:

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

अपशॉट यह है कि Google पुशस्टेट का समर्थन करता है और पुशस्टेट यूआरएल को इंडेक्स करेगा।

Google वेबमास्टर टूल्स को Googlebot के रूप में भी लाएं। आप अपनी जावास्क्रिप्ट (कोणीय समेत) को निष्पादित करेंगे।

बिंग

मार्च 2013 के सुंदर पुशस्टेट यूआरएल के लिए बिंग की समर्थन की घोषणा यहां दी गई है:

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

हैशबैंग्स # का प्रयोग न करें!

हैशबैंग यूआरएल एक बदसूरत स्टॉपगैप थे जो डेवलपर को एक विशेष स्थान पर साइट के पूर्व-प्रस्तुत संस्करण प्रदान करने की आवश्यकता होती थी। वे अभी भी काम करते हैं, लेकिन आपको उनका उपयोग करने की आवश्यकता नहीं है।

हैशबैंग यूआरएल इस तरह दिखते हैं:

domain.com/#!path/to/resource

इस तरह मेटाटैग के साथ जोड़ा जाएगा:

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

Google उन्हें इस फ़ॉर्म में अनुक्रमित नहीं करेगा, बल्कि इसके बजाय _escaped_fragments_ URL और अनुक्रमणिका से साइट का एक स्थिर संस्करण खींच देगा।

पुशस्टेट यूआरएल किसी साधारण यूआरएल की तरह दिखते हैं:

domain.com/path/to/resource

अंतर यह है कि कोणीय दस्तावेज़ में परिवर्तन को अवरुद्ध करके कोणीय उन्हें आपके लिए संभालता है। जावास्क्रिप्ट में इसके साथ निपटने का स्थान।

यदि आप पुशस्टेट यूआरएल (और शायद आप करते हैं) का उपयोग करना चाहते हैं तो सभी पुराने हैश स्टाइल यूआरएल और मेटाटैग निकालें और बस अपने कॉन्फ़िगर ब्लॉक में एचटीएमएल 5 मोड सक्षम करें।

अपनी साइट का परीक्षण

Google वेबमास्टर टूल्स में अब एक टूल है जो आपको यूआरएल को Google के रूप में लाने की अनुमति देगा, और जावास्क्रिप्ट को प्रस्तुत करेगा क्योंकि Google इसे प्रस्तुत करता है।

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

कोणीय में पुशस्टेट यूआरएल उत्पन्न करना

# Prefixed वाले के बजाय, कोणीय में वास्तविक URL उत्पन्न करने के लिए, अपने $ स्थान पर HTML5 मोड सेट करें। ऑब्जेक्ट प्रदान करें।

$locationProvider.html5Mode(true);

सर्वर साइड

चूंकि आप वास्तविक यूआरएल का उपयोग कर रहे हैं, इसलिए आपको यह सुनिश्चित करना होगा कि एक ही टेम्पलेट (प्लस कुछ प्रीकंपोज़ेड कंटेंट) आपके सर्वर द्वारा सभी मान्य यूआरएल के लिए भेज दिया जाए। आप यह कैसे करेंगे अपने सर्वर आर्किटेक्चर के आधार पर अलग-अलग होंगे।

साइटमैप

आपका ऐप नेविगेशन के असामान्य रूपों का उपयोग कर सकता है, उदाहरण के लिए होवर या स्क्रॉल करें। यह सुनिश्चित करने के लिए कि Google आपके ऐप को ड्राइव करने में सक्षम है, मैं शायद एक साइटमैप बनाने का सुझाव दूंगा, जो आपके ऐप का जवाब देने वाले सभी यूआरएल की एक साधारण सूची है। आप इसे डिफ़ॉल्ट स्थान (/ साइटमैप या /sitemap.xml) पर रख सकते हैं, या वेबमास्टर टूल्स का उपयोग करके Google को इसके बारे में बता सकते हैं।

वैसे भी साइटमैप रखना एक अच्छा विचार है।

ब्राउज़र समर्थन

आईई 10 में पुशस्टेट काम करता है। पुराने ब्राउज़र में, कोणीय स्वचालित रूप से हैश स्टाइल यूआरएल पर वापस आ जाएगा

एक डेमो पेज

निम्नलिखित सामग्री को प्रीकंपोजिशन के साथ पुशस्टेट यूआरएल का उपयोग करके प्रस्तुत किया जाता है:

http://html5.gingerhost.com/london

जैसा कि सत्यापित किया जा सकता है, इस लिंक पर , सामग्री अनुक्रमित है और Google में दिखाई दे रही है।

404 और 301 शीर्षलेख स्थिति कोड की सेवा

चूंकि सर्च इंजन हमेशा आपके सर्वर पर हर अनुरोध के लिए हिट करेगा, आप अपने सर्वर से हेडर स्टेटस कोड की सेवा कर सकते हैं और Google को उनसे मिलने की उम्मीद कर सकते हैं।


अभी तक Google ने अपने AJAX क्रॉलिंग प्रस्ताव को बदल दिया है।

समय बदल गया है। आज तक, जब तक आप Googlebot को अपनी जावास्क्रिप्ट या सीएसएस फ़ाइलों को क्रॉल करने से अवरुद्ध नहीं कर रहे हैं, हम आम तौर पर आधुनिक ब्राउज़र जैसे आपके वेब पृष्ठों को प्रस्तुत और समझने में सक्षम होते हैं।

टीएल; डॉ: [Google] अब 200 9 में वापस किए गए AJAX क्रॉलिंग प्रस्ताव [Google] की सिफारिश नहीं कर रहे हैं।


आपको वास्तव में म्यू ब्लॉग के वर्ष में एक एसईओ-अनुकूल AngularJS साइट बनाने पर ट्यूटोरियल देखना चाहिए। वह आपको कोणीय के दस्तावेज़ीकरण पर उल्लिखित सभी चरणों के माध्यम से चलता है। http://www.yearofmoo.com/2012/11/angularjs-and-seo.html

इस तकनीक का उपयोग करके, खोज इंजन कस्टम टैग के बजाय विस्तारित HTML देखता है।


कोणीय की अपनी वेबसाइट खोज इंजनों को सरलीकृत सामग्री प्रदान करती है: http://docs.angularjs.org/?_escaped_fragment_=/tutorial/step_09

कहें कि आपका कोणीय ऐप नोड.जेएस / एक्सप्रेस-संचालित जेएसओएन एपीआई, जैसे /api/path/to/resource का उपभोग कर रहा है। शायद आप किसी भी अनुरोध को ?_escaped_fragment_ से /api/path/to/resource.html रीडायरेक्ट कर सकते हैं, और JSON डेटा लौटने के बजाय सामग्री के HTML टेम्पलेट को प्रस्तुत करने के लिए सामग्री वार्ता का उपयोग कर सकते हैं।

केवल एक चीज यह है कि, आपके कोणीय मार्गों को आपके आरईएसटी एपीआई के साथ 1: 1 से मिलान करने की आवश्यकता होगी।

संपादित करें : मुझे एहसास हो रहा है कि इसमें वास्तव में आपके आरईएसटी एपीआई को गड़बड़ करने की क्षमता है और मैं इसे बहुत ही सरल उपयोग-मामलों के बाहर करने की अनुशंसा नहीं करता हूं जहां यह एक प्राकृतिक फिट हो सकता है।

इसके बजाय, आप अपने रोबोट-अनुकूल सामग्री के लिए मार्गों और नियंत्रकों के एक पूरी तरह से अलग सेट का उपयोग कर सकते हैं। लेकिन फिर आप नोड / एक्सप्रेस में अपने सभी AngularJS मार्गों और नियंत्रकों को डुप्लिकेट कर रहे हैं।

मैं एक हेडलेस ब्राउज़र के साथ स्नैपशॉट्स उत्पन्न करने के लिए बस गया हूं, भले ही मुझे लगता है कि यह आदर्श से थोड़ा कम है।


कोणीय सार्वभौमिक के साथ, आप ऐप के लिए लैंडिंग पृष्ठ जेनरेट कर सकते हैं जो पूर्ण ऐप की तरह दिखता है और उसके बाद अपने कोणीय ऐप को लोड करता है।
कोणीय सार्वभौमिक शुद्ध HTML उत्पन्न करता है जिसका मतलब सर्वर-पक्ष में कोई जावास्क्रिप्ट पृष्ठ नहीं है और बिना किसी देरी के उपयोगकर्ताओं को उनकी सेवा करता है। तो आप किसी भी क्रॉलर, बॉट और उपयोगकर्ता (जिनके पास पहले से ही कम सीपीयू और नेटवर्क की गति है) से निपट सकते हैं। फिर आप उन्हें अपने वास्तविक कोणीय ऐप पर लिंक / बटन द्वारा रीडायरेक्ट कर सकते हैं जो पहले से ही इसके पीछे लोड हो चुका है। आधिकारिक साइट द्वारा इस समाधान की सिफारिश की जाती है। एसईओ और कोणीय सार्वभौमिक के बारे में अधिक जानकारी-


प्रीरेंडर जैसे कुछ का उपयोग करें, यह आपकी साइट के स्थिर पृष्ठ बनाता है ताकि खोज इंजन इसे अनुक्रमित कर सकें।

यहां आप यह पता लगा सकते हैं कि यह कौन से प्लेटफ़ॉर्म उपलब्ध हैं: https://prerender.io/documentation/install-middleware#asp-net


मुझे एक सुरुचिपूर्ण समाधान मिला है जो आपके अधिकांश अड्डों को कवर करेगा। मैंने शुरुआत में इसके बारे में here लिखा और here एक और समान स्टैक ओवरफ्लो प्रश्न here उत्तर here जो इसका संदर्भ देता है।

FYI इस समाधान में क्रॉलर द्वारा जावास्क्रिप्ट को नहीं उठाए जाने पर हार्डकोडेड फ़ॉलबैक टैग भी शामिल हैं। मैंने स्पष्ट रूप से इसे रेखांकित नहीं किया है, लेकिन यह उल्लेखनीय है कि आपको उचित यूआरएल समर्थन के लिए एचटीएमएल 5 मोड सक्रिय करना चाहिए।

यह भी ध्यान दें: ये पूरी फाइलें नहीं हैं, केवल प्रासंगिक लोगों के महत्वपूर्ण भाग हैं। यदि आपको निर्देश, सेवाओं आदि के लिए बॉयलरप्लेट लिखने में मदद की ज़रूरत है जो कहीं और मिल सकती है। वैसे भी, यहां जाता है ...

app.js

यह वह जगह है जहां आप अपने प्रत्येक मार्ग (शीर्षक, विवरण इत्यादि) के लिए कस्टम मेटाडेटा प्रदान करते हैं।

$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' }
   })

मेटाडेटा-सेवा.जेएस (सेवा)

कस्टम मेटाडेटा विकल्प सेट करता है या फ़ॉलबैक के रूप में डिफ़ॉल्ट का उपयोग करता है।

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's defined metadata
$rootScope.$on('$routeChangeSuccess', function (event, newRoute) {
  self.loadMetadata(newRoute.metadata);
});

metaproperty.js (निर्देश)

दृश्य के लिए मेटाडेटा सेवा के परिणाम संकुल।

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

पहले वर्णित हार्डकोडेड फ़ॉलबैक टैग के साथ पूर्ण करें, उन क्रॉलर के लिए जो किसी भी जावास्क्रिप्ट को नहीं उठा सकते हैं।

<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>

यह अधिकांश खोज इंजन उपयोग मामलों के साथ नाटकीय रूप से मदद करनी चाहिए। यदि आप सोशल नेटवर्क क्रॉलर (जो जावास्क्रिप्ट समर्थन पर iffy हैं) के लिए पूरी तरह से गतिशील प्रतिपादन चाहते हैं, तो आपको अभी भी कुछ अन्य उत्तरों में उल्लिखित पूर्व-प्रतिपादन सेवाओं में से एक का उपयोग करना होगा।

उम्मीद है की यह मदद करेगा!



क्रॉलरों को एक समृद्ध फीचर्ड सुंदर स्टाइल गुई की आवश्यकता नहीं होती है, वे केवल सामग्री देखना चाहते हैं , इसलिए आपको उन्हें एक पृष्ठ का एक स्नैपशॉट देने की आवश्यकता नहीं है जो मनुष्यों के लिए बनाया गया है।

मेरा समाधान: क्रॉलर को क्या क्रॉलर देना चाहता है :

आपको यह सोचना चाहिए कि क्रॉलर क्या चाहता है, और उसे केवल यही दे।

टीआईपी पीठ के साथ गड़बड़ नहीं है। एक ही एपीआई का उपयोग करके बस थोड़ा सर्वर-पक्षीय फ्रंटव्यू जोड़ें





google-search