2012-11-21 21 views
5

Gibt es eine Möglichkeit, die aktuellen URL-Parameter vom Controller zu ändern, sodass beim Laden der Seite zusätzliche/andere Parameter in der Adressleiste angezeigt werden?URL vom Controller ändern?

Hier ist, was ich meine, ich sage eine Aktion ‚Produkte‘ haben:

public ActionResult Product(int productId) 
{ 
    .. 
} 

ich kartiert die Routen so dass product/4545/purple-sunglasses oben auf die Funktion abgebildet wird, wird der Produktname tatsächlich ignoriert, aber ich will, dass, wenn der Produktname nicht angegeben ist, sollte der Controller diese Erweiterung, so dass das Produkt leicht in Suchmaschinen wird in usw.

Antwort

7

Werfen sie einen Blick hier: http://www.dominicpettifer.co.uk/Blog/34/asp-net-mvc-and-clean-seo-friendly-urls

es gibt eine sehr lange Beschreibung, wie es geht . Und der letzte Teil erzählt Ihnen von 301-Weiterleitungen, die Sie verwenden sollten, um Suchmaschinen Crawler anzuweisen, dass die Seite unter der gewünschten URL gefunden werden kann, die Sie wünschen.

Vergessen Sie nicht, sich die URL-Codierung anzusehen, sollten Sie etwas Arbeit sparen und qualitativ hochwertigere URLs bereitstellen.

Hier sind einige wesentliche Auszüge aus dem Blog-Post:

Ihre Routing einrichten:

routes.MapRoute( 
    "ViewProduct", 
    "products/{id}/{productName}", 
    new { controller = "Product", action = "Detail", id = "", productName = "" } 
); 

den Namen-Teil zu dem Controller hinzufügen und überprüfen, ob es der richtige Name ist:

public ActionResult Detail(int id, string productName) 
{ 
    Product product = IProductRepository.Fetch(id); 

    string realTitle = product.Title; // Add encoding here 

    if (realTitle != urlTitle) 
    { 
     Response.Status = "301 Moved Permanently"; 
     Response.StatusCode = 301; 
     Response.AddHeader("Location", "/Products/" + product.Id + "/" + realTitle); // Or use the UrlHelper here 
     Response.End(); 
    } 

    return View(product); 
} 

update
Die URL ist anscheinend defekt. Dieser Artikel beschreibt meist die gleiche Funktionalität: http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx

Danke an Stu1986C für den Kommentar/neuen Link!

+2

Danke. Übrigens, es ist immer eine gute Angewohnheit, den kritischen Teil des verlinkten Inhalts in Ihren Post zu kopieren. Wenn also der Link morgen nicht mehr funktioniert, können die Nutzer immer noch von Ihrer Antwort profitieren. Auch wird es zugänglicher sein und die Antwort wird für Leute sichtbarer sein. – Shimmy

+2

Die Verbindung ist tot. Hier ist der neue: http: //www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx – Stu1986C

+0

Der neue Link zur Antwort hinzugefügt. Vielen Dank! –