2013-06-07 8 views
30

में रीडायरेक्ट्स मैं किसी अन्य रूट पर स्थायी 301 रीडायरेक्ट करने के लिए ASP.NET MVC 4 ऐप में RouteConfig.cs फ़ाइल में रूट कैसे जोड़ सकता हूं?ASP.NET MVC 4 - 301 RouteConfig.cs

मुझे एक ही नियंत्रक कार्रवाई पर इंगित करने के लिए कुछ अलग-अलग मार्ग चाहिए - ऐसा लगता है कि इसके लिए 301 विशेष रूप से एसईओ के लिए सबसे अच्छा अभ्यास होगा?

धन्यवाद।

public class RedirectController : Controller 
{ 

    public ActionResult News() 
    { 

     // your code 

     return RedirectPermanent("/News"); 
    } 
} 
वैश्विक asax में

:

+0

मुझे लगता है कि इस सवाल का जवाब कुछ मूल्य http://stackoverflow.com/a/7664217/1236044 का हो सकता है की [आप एक 301 करूँ कैसे स्थायी मार्ग अनुप्रेषित – jbl

+0

संभव डुप्लिकेट एएसपी.नेट एमवीसी में] (http://stackoverflow.com/questions/2216890/how-do-you-do-a-301- स्थायी-redirect-route-in-asp-net-mvc) – JNF

उत्तर

45

आप RedirectPermanent उपयोग करने के लिए, यहाँ एक उदाहरण है

routes.MapRoute(
     name: "News old route", 
     url: "web/news/Default.aspx", 
     defaults: new { controller = "Redirect", action = "News" } 
    ); 
+0

धन्यवाद - तो यह स्वचालित रूप से एक स्थायी पुनर्निर्देशन है? आप इसे अस्थायी होने के लिए कैसे कहेंगे? – niico

+0

रीडायरेक्ट स्थायी (यूआरएल) 301 को स्टेटस कोड के रूप में जोड़ें, रीडायरेक्ट (यूआरएल) एक साधारण रीडायरेक्ट –

+0

आह है इसलिए मुझे नियंत्रक बनाना है? मैं बस RouteConfig.cs से यह सब नहीं कर सकता? (या global.asax) – niico

25

मैं जानता हूँ कि आप विशेष रूप से कैसे RouteConfig पर ऐसा करने के लिए कहा है, लेकिन आप भी कर सकते हैं IIS Rewrite Rules का उपयोग करके इसे पूरा करें। नियम आपके web.config पर रहते हैं, इसलिए आपको नियम बनाने के लिए आईआईएस का उपयोग करने की भी आवश्यकता नहीं है, आप उन्हें केवल web.config में जोड़ सकते हैं और अपने सभी वातावरण (देव, स्टेजिंग, प्रोड, इत्यादि) और अपने रूट कॉन्फिग को साफ रखें। आईआईएस 7 पर आईआईएस मॉड्यूल स्थापित करने की आवश्यकता है, लेकिन मेरा मानना ​​है कि यह 7.5+ पर पूर्व स्थापित है।

यहाँ एक उदाहरण है:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Redirect t and c" stopProcessing="true"> 
        <match url="^terms_conditions$" /> 
        <action type="Redirect" url="/TermsAndConditions" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+8

महान उत्तर! मैं यह सुनिश्चित करने के लिए 'action' टैग के अंत में' redirectType = "स्थायी" 'जोड़ने की अनुशंसा करता हूं कि यह एक 301 रीडायरेक्ट है। – Theophilus