2017-07-14 3 views
0

Ich habe eine ASP.net MVC 5-Site. Die Homepage ist unter http://mydomain.Entfernen der sekundären Route "Home/Index" zur Homepage

Allerdings gibt es auch eine zweite Route zur Homepage - http://mydomain/home/index - was ich denke,

Dies verursacht Probleme, weil es als Duplicate Content zu sehen ist, und die Bilder sind auf dieser Seite gebrochen.

Wie kann ich diese Route vollständig entfernen (so geht es auf eine 404, denke ich?).

Ich habe Google durchsucht, kann aber nur Artikel zum Entfernen von Home von Routen finden - nicht das, was ich brauche.

Ich verwende Attribut-Routing, und das ist alles, was in dem RouteConfig.cs:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

// Enable Route Attributes in Controllers 
routes.MapMvcAttributeRoutes(); 

// Fall through all routes 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

Die Home Index Aktion hat auf es kein Attribut Route (wie würden Sie vermutlich erwarten?). Diese/home/index Route funktioniert auch bei neu erstellten MVC Projekten - was ich für eine schlechte Idee halte?

Wie kann ich das tun?

Gibt es Probleme mit dem Entfernen dieser Route, die ich vielleicht nicht berücksichtigt habe?

thx.

+1

Entfernen Sie die Zeile "routes.MapRoute", dann wird die Route eingerichtet. – DavidG

+0

Doppelte Inhalte sind kein Problem, wenn Sie es im Zusammenhang mit SEO meinen. Dieses Problem wird gelöst durch die Verwendung von "kanonischen URLs": https://yoast.com/rel-canonical/ – Jeroen

+0

Ich meine für SEO - ich meinte auch nur für meinen eigenen Verstand - ich sah kaputte Bilder und nahm mir 10 Minuten zu finde heraus, warum. Lassen Sie mich diese Runde auch drehen - was ist der Nachteil von disabled/home/index? – niico

Antwort

0

Dies ist nicht notwendig.

Die Standardroute bietet optionale Controller- und Aktionsnamen. Wenn also der Benutzer keinen Namen für den Controller und/oder die Aktion im Pfad angibt (/ Home/Index oder/Home in dieser Situation), legt asp.net die richtigen Werte in das Anwendungs-Routing ein.

Immer wenn Sie Url.Action oder Url.Route Funktionen verwenden, wird es die kürzeste Verbindung für Sie produzieren. So in Ihrer Website wird immer http://mydomain für Ihre Root produziert werden. Und zum Beispiel Kategorie> Index Aktion wird http://mydomain/category produzieren.

In Ihrer Website werden Bots nie doppelte Inhalte erhalten, wenn Ihre Links auf diese Weise sind. Wenn Sie Ihre Links manuell schreiben schreiben Sie so kurz wie Sie können oder einfach Url.Action verwenden.

Über die Bilder muss es etwas anderes geben, denn Bilder sind statische Dateien. benutze einfach "~/imagefolder/imagename.jpg" um sie zu bekommen. "~" ist wichtig, Link vom Stamm der Anwendung zu starten, wenn Sie Ihre Anwendung in einem Unterordner in IIS arbeiten.

+0

Ich sah kaputte Bilder und brauchte 10 Minuten, um herauszufinden, warum, weil ich bei/home/index war (ich bin mir nicht sicher, wie ich dahin gekommen bin). Lassen Sie mich diese Runde umdrehen - was ist der Nachteil der Deaktivierung/home/index? Ich sehe den Vorteil darin nicht existierend ?! – niico

+0

In Bezug auf Bilder - sie sind von css innerhalb der Seite verknüpft - so ~ funktioniert nicht. – niico

2

Mit der IgnoreRoute() können Sie unerwünschte Routen blockieren, die Sie nicht möchten.

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.IgnoreRoute("Home"); 
routes.IgnoreRoute("Home/Index"); 

// Enable Route Attributes in Controllers 
routes.MapMvcAttributeRoutes(); 

// Fall through all routes 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

Wenn jedoch diese URLs bereits in der freien Natur sind, sollten Sie stattdessen das Einrichten eines 301-Weiterleitung auf die kanonische URL Sie bestimmt. Der einfachste Weg dazu ist mit der URL rewrite module.

Diese/home/index-Route funktioniert auch bei neu erstellten MVC-Projekten - was ich für eine schlechte Idee halte?

Ich sehe das als eher ein Segen in Verkleidung. Es ist ein Vorteil gegenüber jedem SEO-Konkurrenten, der MVC verwendet, der die zusätzliche Arbeit nicht ausführt, um diese Routen zu entfernen, wenn Sie derjenige sind, der dies tut.

+0

Danke - nicht in der Wildnis und ich brauche immer noch/home/otherstuff - also denke ich, ich brauche nur routes.IgnoreRoute ("Home/Index"); – niico

Verwandte Themen