2012-07-19 72 views
0

我正在使用ASP.NET MVC路由来根据某些词引导流量,例如mydomain.com/support,它指向支持页面(位于主控制器下)或mydomain.com/controller/action/id(默认情况下)。'重载'MVC路由?

但是,我还希望流量能够在通用顶级域名(gTLD)之后使用任何单个字词 - 我尚未指定 - 打开我的主页。

例如:mydomain.com/anything仍然会打我的主页,而不会产生404响应。凡什么是除了我已经指定的任何词(所以在这个例子中的“支持”)。

这甚至可能吗?

回答

0

你只是做了这样的事情吗?

routes.MapRoute(
    "MyRoute", 
    "{word}.aspx", 
    new { 
     controller = "Home", 
     action = "Index" 
    } // Parameter defaults 
); 

和更新的动作(指数在这种情况下有一个参数)。

0

我不知道你为什么要这样做,因为通过这个,你可以最终索引很多搜索引擎的请求。

routes.MapRoute(
    "MyRoute", 
    "{anything}", 
    new { controller = "Home", action = "Index" } 
); 

该路由应该在最后一条默认路由之后。

如果你想即使这种请求http://mydomain.com/anything/otherthing/another仍然由家庭控制器处理,那么你一定要试试的,

routes.MapRoute(
    "CatchAllRoute", 
    "{*anything}", 
    new { controller = "Home", action = "Index" } 
); 
+0

这会导致搜索引擎不好的时候重新:搜索结果? – Greg 2012-07-19 14:14:51

+1

你打算对所有这些请求给予同样的回应吗?如果是这种情况,那么它可能会降低页面等级。如果您针对两个不同的网址向浏览器提供相同的响应,将会降低网页排名。 – VJAI 2012-07-19 14:22:37