2013-08-25 4 views
10

क्या डिफ़ॉल्ट रूट को प्रतिस्थापित करने के लिए Durandal 2.0 में डिफ़ॉल्ट राउटर व्यवहार को प्रतिस्थापित करना संभव है उदाहरण के लिए: 'mysite.com/#/myroute' 'mysite.com/#!/myroute' के साथ कारण यह है कि पृष्ठ का पता लगाने के लिए Google मकड़ी AJAX क्रॉल-सक्षम है, मुझे केवल एक हैशटैग नहीं है, यूआरएल में हैशबैंग डालने की ज़रूरत है। किसी भी तरह की सहायता का स्वागत किया जाएगा।Durandal 2.0 राउटर # के लिए # को प्रतिस्थापित कर सकता है! AJAX वेब क्रॉलिंग उद्देश्यों के लिए?

धन्यवाद!

उत्तर

6

जहां तक ​​मुझे पता है, Durandal 2.0 में आप ऐसा करने में सक्षम नहीं हैं। router और history प्लगइन इसका समर्थन नहीं करते हैं, और यह एक आसान फिक्स नहीं होगा क्योंकि कोड में कुछ स्थान हैं जो # पर भरोसा करते हैं।

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

आप अभी भी एप्लिकेशन के मुख्य HTML में मेटा टुकड़ा प्रकार का उल्लेख करके आपके आवेदन एसईओ # का उपयोग कर संगत बनाने के कर सकते हैं:

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

तो तुम गूगल कह रहे हैं कि आपके लिंक #! नहीं है, लेकिन कि एप्लिकेशन जावास्क्रिप्ट प्रतिपादन का उपयोग कर रहा है। फिर क्रॉलर के अनुरोधों में ?_escaped_fragment_ शामिल होगा।

तो आपके एप्लिकेशन में आप का उपयोग करेगा:

mysite.com/#myroute 

और क्रॉलर का अनुरोध करेंगे:

mysite.com?_escaped_fragment_=myroute 

चेक गूगल के documentation on crawling की धारा 3 मेटा टुकड़ा टैग के बारे में अधिक जानने के लिए।

सुझाव

आप पूरी तरह से इस तरह रूटर सक्रिय करने के द्वारा इस सुविधा मैं Durandal 2.0 में pushState उपयोग करने का सुझाव का लाभ लेना चाहते हैं: और भी मेटा टुकड़ा टैग सहित

router.activate({ pushState: true }); 

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

चीजें आप pushState का उपयोग कर यदि विचार करना चाहिए:

  • pushState उपयोग केवल यदि आप पुराने ब्राउज़रों का समर्थन करने के लिए योजना नहीं बना रहे।

  • आप अपने सर्वर साइड pushState तैयार करने की जरूरत है, इसका मतलब है कि जब सर्वर mysite.com/myroute साथ अनुरोध किया जाता है ही जे एस एप्लिकेशन को वापस लौटाने और ग्राहक प्रक्रिया जाने क्वेरी स्ट्रिंग पैरामीटर में सक्षम होना चाहिए। उदाहरण के लिए, यदि आप ASP.NET का उपयोग कर रहे हैं तो आईआईएस यूआरएल रीराइट का उपयोग करके इसे हासिल किया जा सकता है। इस विषय के बारे में blog post अच्छा है।

+1

उत्कृष्ट स्पष्ट रूप से लिखित प्रतिक्रिया। धन्यवाद, इससे मुझे बहुत मदद मिलेगी। – ccorrin

+0

मेरे पास एक त्वरित सवाल है, मुझे लगता है कि अब यह काम कर रहा है, लेकिन जब मैं अपनी साइट को Google पर सबमिट करता हूं, और Google को लिंक देता हूं तो मुझे इसे http://mysite.com/# देना होगा! या सिर्फ http://mysite.com और google _escaped_fragment_ में जोड़ देंगे क्योंकि मेरे पास मेटा टैग में है? – ccorrin

+0

मैं केवल mysite.com कहूंगा .. – margabit

संबंधित मुद्दे