5

Oto kod, którego używam, gdy ktoś odwiedza stronę produktu w mojej witrynie e-commerce.Czy ten kod metody działania C# rzeczywiście uruchamia przekierowanie 301?

public ActionResult Details(int id, string slug) 
{ 
    using (var productRepository = new EfProductRepository()) 
    { 
     var product = productRepository.FindById(id); 
     if (product == null) return RedirectToAction("Index", "Home"); 
     if (product.SeoTextSlug != slug) 
      return RedirectToAction("Details", new {id = product.ProductId, slug = product.SeoTextSlug}); 

     var model = new ProductDetailModel(); 

     //Load the product information. 
     model.Product.ProductId = product.ProductId; 
     model.Product.CoverImagePath = product.CoverImagePath; 
     model.Product.Name = product.Name; 
     model.Product.Tagline = product.Tagline; 
     model.Product.Price = product.Price; 
     model.Product.Stock = product.Stock; 
     model.Product.PieceCount = (int)product.PieceCount; 
     model.Product.SKU = product.SKU; 

     //Load the reviews for that product. 
     if (product.Reviews.Any()) 
     { 
      foreach (var review in product.Reviews) 
      { 
       model.Reviews.Add(new ReviewModel() 
       { 
        ReviewId = review.ReviewId, 
        AccountId = (int)review.AccountId, 
        Content = review.Content, 
        Location = review.Location, 
        ProductId = (int)review.ProductId, 
        PublishDate = review.PublishDate, 
        ReviewRatingId = (int)review.ReviewRatingId 
       }); 
      } 
     } 

     return View(model); 
    } 
} 

W tym kawałku:

if (product.SeoTextSlug != slug) 
    return RedirectToAction("Details", new {id = product.ProductId, slug = product.SeoTextSlug}); 

Am I rzeczywiście wypalania 301 przekierowanie prawidłowo?

Pewnie, że działa tak, jak chcę, ale chcę się upewnić, że zwracam prawidłowy standardowy wynik HTTP, więc wyszukiwarki odpowiednio na niego reagują.

+0

można potwierdzić za pomocą narzędzi deweloper przeglądarce. Przejdź do sieci i zobacz żądania HTTP. – epignosisx

Odpowiedz

12

wierzę, że RedirectToAction zwraca 302 podczas RedirectToActionPermanent powraca 301.

+0

Więc wszystko, co muszę zrobić na moim końcu jest użycie 'RedirectToActionPermanent' zamiast tego, prawda? –

+0

@ Sergio: tak. Jedynym warunkiem jest to, że musisz mieć pewność, że chcesz 301 zamiast 302. –