Ich habe die folgende Route in meinem MVC-Projekt ein:MVC Routing Werfen 404
routes.MapRoute(
"Product",
"product-{pathname}-{productId}",
new { controller = "Product", action = "ProductPage" });
Dies funktioniert gut für Urls wie product-test-title-1234
aber wenn die pathname
Bit der URL product-
enthält, wird eine 404 geworfen - Ist gibt es eine Möglichkeit, eine URL wie product-test-product-title-1234
zu ermöglichen?
Weirdly, wenn ich das zweite Produkt setzen kurz vor der Produkt-ID (zB product-test-title-product-12345
), dann die Route funktioniert und die Seite angezeigt wird, irgendwo anders, und es wirft ein 404
aktualisieren
Ich denke, das Problem könnte darin liegen, dass 2 Teile der URL mit der Route übereinstimmen. Ich denke, meine Frage ist, wie Sie sicherstellen, dass die Route besagt, dass das erste Produkt am Anfang der URL stehen muss (und weitere Instanzen zählen) Produkt als Teil des Pfadnamens).
Nach weiteren Tests hat ich, dass statt gefunden Produkt Controller zu gehen, diese URL zu meinem catchall Weg geht: {*pathname}
- nicht sicher, warum dies
Warum ein '-' (Bindestrich)? - anstatt 'product/{pathname}/{productId}' zu erzeugen '../ product/test/product-title-1234' –
@StephenMuecke ist es leider der Pfad der aktuellen Webseite und wir müssen es gleich behalten damit wir keine 301 bleibenden Karten für alle alten URLs implementieren müssen (sonst wird die neue Seite die alte ersetzen, werden wir auf seo bestraft). Es ist auch, was die Marketingabteilung will - ich würde für die übliche '/' Struktur zu gehen, aber anscheinend eine flache URL-Struktur ist auch besser für Seo-Rankings – Pete