我已经设置了以下的路径,在我的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