J'ai mis en place la route suivante dans mon projet MVC:MVC Routing Lancer 404
routes.MapRoute(
"Product",
"product-{pathname}-{productId}",
new { controller = "Product", action = "ProductPage" });
Cela fonctionne bien pour urls comme product-test-title-1234
mais si le bit pathname
de l'URL contient product-
, 404 est jeté - Est il y a un moyen de permettre une URL comme product-test-product-title-1234
?
Bizarrement, si je mets le deuxième produit juste avant l'identification du produit (par exemple product-test-title-product-12345
), les travaux de la route et la page est affichée, nulle part ailleurs et il jette un 404
Mise à jour
Je pense que le problème peut résider dans le fait que 2 parties de l'URL correspondent à l'itinéraire. Ma question est donc de savoir comment vous assurez que l'itinéraire indique que le premier produit doit être au début de l'URL (et compte produit dans le cadre du chemin d'accès).
Après d'autres essais, j'ai trouvé qu'au lieu d'aller au contrôleur de produit, cette URL va à mon itinéraire catchall: {*pathname}
- ne sais pas pourquoi cela se produit
Pourquoi un '-' (trait d'union)? - au lieu de 'product/{pathname}/{productId}' pour générer '../ product/test/product-title-1234' –
@StephenMuecke malheureusement c'est le chemin du site actuel et nous devons garder le même de sorte que nous n'avons pas besoin d'implémenter 301 permanents pour toutes les anciennes urls (sinon quand le nouveau site remplacera l'ancien nous serons punis sur le référencement). Aussi, c'est ce que le département marketing veut - je serais allé pour la structure habituelle '/' aussi, mais apparemment une structure d'url peu profonde est également préférable pour les classements de référencement – Pete