6

Ben her şeyi googled ettik ve bir ton farklı yanıtlar okudum - bazıları hiç bir başarı ile ima etmeye çalıştım. Profesyonel bir programcı değilim, ama bu forumdaki insanlara, jQuery'den doktrinlere kadar herşeyi bana öğrettiği için teşekkür ediyorum.Asp.net içinde 301 yönlendirmesi için önerilen yol daha nedir?

VWD 2010 Express'te geliştirilmiş bir web sitem var. Sadece 2 şey bilmek istiyorum:/Ben arama motorları için kötü olduğunu biliyorum

  1. içeriği yourdomain etmiş çoğaltmak ve www.yourdomain hem, bu yüzden bir 301 yönlendirmesi kurmak istediğiniz bir son kullanıcı eğer o kadar etki alanındaki türler, otomatik olarak www.mydomain adresine (www ile) yönlendirilir.

  2. Kök olmayan, ancak klasörlerdeki bazı sayfaları taşıdım. Bu yüzden güncel olmayan sayfayı yeni konumla değiştirmek istiyorum. Bunu, www.mydomain/hizmetlerini /engineering.aspx adresinden www.mydomain/ürünlerine otomatik olarak yeniden yönlendirerek yapmak istiyorum /engineering.aspx.

Bu zor mu? .htaccess veya web.config veya başka bir şey kullanmak (önerilir) mı?

Bunu okumak için zaman ayırdığınız için teşekkür eder, içtenlikle tüm geri bildirimleri takdir ediyorum.

Jason Weber

cevap

7

ben yanlış anladın sürece .htacess Apache için olduğunu ve ASP.Net içinde kodlama eğer neredeyse kesinlikle IIS kullanıyor. Bu yüzden araştırmanızda .htaccess şeyleri var.

Yönlendirmeleriniz için bir çeşit URL Rewriter kullanabilirsiniz, ancak bu çok karmaşık olabilir. Yerinde olsaydım seni Global.asax benzer yapabilirdi sizin kanonik yönlendirme (www olmayan www) için

protected void Page_Load(object sender, System.EventArgs e) 
{ 
    Response.Status = "301 Moved Permanently"; 
    Response.AddHeader("Location","http://www.domainname.com/new-page.aspx"); 
} 

yani Page_Load olayına 301 yönlendirmeleri mümkün olduğunca basit tutmak ve eski sayfa yapacağını bunu anlamak kolay olmanın yararı vardır - Application_BeginRequest dosya

Bu benim zaten ne yapacağını (bu benim kod here geldi değil)

if (HttpContext.Current.Request.Url.ToString().ToLower().Contains( 
    "http://mysite.com")) 
{ 
    HttpContext.Current.Response.Status = "301 Moved Permanently"; 
    HttpContext.Current.Response.AddHeader("Location", 
     Request.Url.ToString().ToLower().Replace( 
      "http://mysite.com", 
      "http://www.mysite.com")); 
} 

yani olmayan www varyantı tespit etmek için ve sizi herhangi bir yoldan uzak tutmak Bazen kara kutudan biraz buldum garip web sunucusu config.

+0

Mükemmel bilgi, Yengeç - çok takdir! Windows sunucuda olduğum için .htaccess/apache öğelerini tanımadığım için oldukça aptalım. Bilgi ve bağlantı mükemmel - benim durumum için mükemmel bir tavsiye. Bu yönlendirmelerin uygulanması çok zor olmamalı. Zaman ayırdığınız için tekrar teşekkürler! –

+0

@JasonWeber Hiç sorun değil. Tüm iyi şanslar –

6

VWD 2010 Express'i kullandığınızdan, Response.RedirectPermanent (stringURL) .NET4 yöntemini kullanmanızdan yararlanırsınız. HttpResponse nesnesinin bir parçasıdır. burada mevcut

Daha dokümantasyon: Response.Redirect gibiydi aynı http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

Bu fonksiyonlar() ancak yönlendirme gerçekleştirerek birlikte müşteriye bir 301 kodu verir.

+0

Bu mükemmel ve kolay oldu - teşekkürler cevap ve bağlantı için bir ton, Kyle! –

+0

Ve evet, .net4.0 çerçevesindeyim, bu yüzden bu mükemmel bir çözümdü. –

-1

Eğer

string url = "newpage.aspx"; 
     Response.Clear(); 
     Response.StatusCode = 301; 
     Response.RedirectLocation = url.ToLower(); 
     Response.End(); 

Sonra Chrome'dan incelemek aracı kullanmak ve Durum Kodu görmek için "Ağ" sekmesine kontrol

301 üzerinde yönlendirme istediğiniz yere yapın. Benim için çalışıyor.

İlgili konular