我已經設置了以下的路徑,在我的MVC項目:MVC路由投擲404
routes.MapRoute(
"Product",
"product-{pathname}-{productId}",
new { controller = "Product", action = "ProductPage" });
這工作得很好像product-test-title-1234
網址,但如果pathname
位的URL包含product-
,404被拋出 - 是有一種方法可以允許像product-test-product-title-1234
這樣的網址?
古怪,如果我把第二個產品只是產品ID之前(如product-test-title-product-12345
),那麼路徑工程和頁面顯示,其他任何地方,它拋出一個404
更新
我認爲問題可能在於URL的兩部分與路由匹配這一事實,所以我想我的問題是如何確保路由表明第一個產品必須位於url的開頭(並計算任何更多的實例產品作爲路徑名的一部分)。
進一步測試後,我發現,而不是去到產品的控制器,這個網址去我包羅萬象的路線:{*pathname}
- 不知道爲什麼會這樣
爲什麼用'-'(連字符)? - 代替'product/{pathname}/{productId}'生成'../ product/test/product-title-1234' –
@StephenMuecke不幸的是它是當前網站的路徑,我們需要保持它不變所以我們不必爲所有的舊網址實施301個永久物(否則當新的網站替換舊的時候,我們將在seo上受到懲罰)。另外這也是市場部門想要的 - 我也會用通常的'/'結構,但顯然淺的url結構對於seo排名也更好 – Pete