对于我网站上的某些网页,例如登录页面,我宁愿用户看到login.htm
,而不是/Home/Login
。
我尝试过创建这样的路线:
routes.MapRoute(
name: "LoginScreen",
url: "login.htm",
defaults: new { controller = "Home", action = "Login" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
当我尝试访问/login.htm时,我得到了404。
答案 0 :(得分:0)
此处还有其他答案可以将静态页面路由到控制器(例如url with extension not getting handled by routing),但我会问你为什么要这样做?
用户通常不关心他们正在访问的网址,通过这样做,您实际上正在摆脱mvc的一个好处,即无扩展路由
<强>已更新强>
查看IIS中的网址重写(http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing)
您将要么必须捕获.htm(l)页面的所有请求,并且有一些逻辑来确定发送它们的位置,或者您将为每个.htm(l)页面设置单独的重写规则您想要映射到控制器操作
答案 1 :(得分:0)
只要LoginScreen
以上没有其他路线且控制器和动作名称正确,那么这应该可以正常工作。
如果您有其他路由映射,请将其注释掉并再次尝试。也许另一条路线正在干扰它。