2012-04-12 4 views
5

कुछ सलाह चाहिए। मेरे पास थोड़ा एसईओ अनुभव है। एमवीसी 3 का उपयोग कर अपने वाईफाई के नए व्यवसाय के लिए ब्रोशरवेयर साइट बनाना। मेरे पास लिंक का उपयोग करके शीर्ष पर कुछ नेविगेशन है।रूटिंग और आंशिक विचारों के बारे में एमवीसी 3 के लिए एसईओ सलाह

<a class="main" href="/Home/Contact">Contact Us</a> 

जो मैं कुछ jquery के साथ अवरुद्ध कर रहा हूं।

ns.BindNavigation = function() { 
    $(".nav-bar a").click(function (e) { 
     $("#Content").load(this.href); 
     return false; 
    }); 
}; 

जहां/होम/संपर्क आंशिक दृश्य देता है। कारण मैं AJAX लोड का उपयोग कर रहा हूं इसलिए मुझे प्रत्येक क्लिक पर एक पूर्ण पृष्ठ पोस्टबैक नहीं मिलता है जो सभी पेज सामग्री को पुनः लोड करता है।

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

मेरा सवाल है, क्या प्रत्येक अनुभाग के लिए पूर्ण पृष्ठ पोस्टबैक का उपयोग करना सबसे अच्छा होगा, इसलिए मुझे प्रत्येक पृष्ठ पर एक शीर्षक और विवरण मिलता है? या फिर भी मेरे एसईओ को खराब किए बिना नेविगेशन के लिए AJAX का उपयोग करने का कोई तरीका है। मुझे पता है कि कोई सही जवाब नहीं है इसलिए किसी भी इनपुट के लिए अग्रिम धन्यवाद।

+1

इसे देखें ...https://developers.google.com/webmasters/ajax-crawling/docs/learn-more – Trent

+0

क्या आप अपनी कार्रवाई में [ChildActionOnly] विशेषता का उपयोग करते हैं? –

+0

अच्छा लिंक, धन्यवाद। –

उत्तर

5

एमवीसी 3 कुछ विशेष चीजें करता है जब आप अपने नियंत्रक कार्रवाई से वापस आते हैं। जब आप अपने नियंत्रक से आंशिक दृश्य परिणाम (return PartialView();) वापस करते हैं, तो आप 'पूर्ण दृश्य' का संदर्भ दे सकते हैं और रेज़र इंजन उस दृश्य के लिए लेआउट फ़ाइलों को अनदेखा कर देगा और केवल सामग्री भाग को वापस कर देगा। आपके मामले में, यदि अनुरोध एक AJAX अनुरोध था या नहीं, तो आप एक चेक डाल सकते हैं। उस पर आधारित, अनुरोध किए गए यूआरएल के आंशिक दृश्य के पूर्ण दृश्य को वापस करें। आप एमवीसी 3 के लिए केवल दो फाइलों को बदलने के लिए डिफ़ॉल्ट 'इंटरनेट साइट' टेम्पलेट पर इसके साथ प्रयास/समाप्ति कर सकते हैं।

पहले, अपने घर/सूचकांक दृश्य:

@{ 
    ViewBag.Title = "Home Page"; 
} 

<h2>@ViewBag.Message</h2> 
<p> 
    @Html.ActionLink("This is AJAXy", "About", "Home", null, new{@class="ajax"}) 
</p> 

<div id="AjaxContent"></div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".ajax").click(function (e) { 
      e.preventDefault(); 
      alert("clicked"); 
      $.ajax({ 
       url: this.href, 
       dataType: 'html', 
       success: function (data) { 
        $('#AjaxContent').html(data); 
        alert('Load was performed.'); 
       } 
      }); 
     }); 
    }); 
</script> 

मैं घर/के बारे में कार्रवाई के लिए लिंक AJAXing कर रहा हूँ। डिफ़ॉल्ट टेम्पलेट में, आपके पास परीक्षण के लिए शीर्ष कोने में डिफ़ॉल्ट टेम्पलेट नेविगेशन अनुभाग में अभी भी एक पूर्ण अनुरोध लिंक है।

इसके बाद, अपने घर नियंत्रक

System.Web.Mvc उपयोग करते हुए;

namespace MvcApplication6.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Welcome to ASP.NET MVC!"; 

      return View(); 
     } 

     public ActionResult About() 
     { 
      if(Request.IsAjaxRequest()) 
      { 
       return this.PartialView(); 
      } 
      return View(); 
     } 
    } 
} 
अब

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

न केवल इस तरह के कुछ को लागू करने के लिए आपके एसईओ की मदद करेगा, लेकिन जो लोग जावास्क्रिप्ट का उपयोग नहीं करते हैं वे अभी भी आपकी साइट का उपयोग करने में सक्षम होंगे, पूरी तरह से काम कर रहे हैं।

संपादित

ऊपर दिए गए उदाहरण के साथ .load समारोह (कम से कम मेरे परीक्षण में) का उपयोग नहीं कर सकते हैं। कारण: .लोड एक्स-अनुरोधित-हेडर के साथ यह निर्धारित करने के लिए सेट नहीं करता है कि यह एक AJAX अनुरोध था। कामकाज हैं, मुझे यकीन है, लेकिन ध्यान दिया गया था कि आप क्या इस्तेमाल कर रहे थे और यह पता लगाया कि यह एक यात्रा का खतरा हो सकता है यदि आप इस मार्ग पर जाना चुनते हैं।

+0

महान उत्तर आदमी, बहुत सराहना की! मैं ऐसा कुछ करने के बारे में सोच रहा था, मैं कल रात अपने कार्यान्वयन के आसपास अपने सिर को लपेट नहीं सका। पुन: धन्यवाद। –

+0

कोई समस्या नहीं - मैं हाल ही में इस पर आया और सोचा कि यह वास्तव में अच्छा था कि उसने ऐसा किया। – Tommy

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