5

Ecco il codice che uso quando qualcuno visita una pagina di prodotto sul mio sito di e-commerce.Il codice del metodo di azione C# sta effettivamente generando un reindirizzamento 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); 
    } 
} 

In questo bit:

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

Perchè sono effettivamente sparare un redirect 301 in modo corretto?

Sicuramente funziona come voglio, ma voglio essere sicuro di restituire un risultato HTTP standard corretto in modo che i motori di ricerca rispondano correttamente.

+0

È possibile confermare esso utilizzando gli Strumenti per sviluppatori di un browser. Vai alla rete e vedi le richieste HTTP. – epignosisx

risposta

12

credo che RedirectToAction restituisce 302, mentre i rendimenti RedirectToActionPermanent 301.

+0

Quindi tutto ciò che devo fare da parte mia è usare 'RedirectToActionPermanent', invece, correggere? –

+0

@Sergio: si. L'unica condizione è che devi essere sicuro di voler 301 invece di 302. –