.NET MVC网站路由伪静态设置方法
MVC路由伪静态设置URL伪静态
编程开发
52
MVC下自定义路由规则实现伪静态
时下很多门户网站或者各大电商平台的网站的链接最后都是.htm或者.html结尾 , 不免让人疑惑难道这些网站的页面全都是静态页面吗!显然不可能,对于小型的企业展示网站倒是可以行得通,毕竟数据量小同时数据基本也是不会怎么改动的,但对于淘宝 京东这类 亿 + 数据级的网站 来说显然不可能。有无数个页面都各自对应一个Html,在商品每时每刻都可能被更新的情况下,即时有专门的人员负责 ,上亿的数据可想而知;
伪静态好处: 一是 有利于搜索引擎排名那就是SEO(Search Engine Optimization)即搜索引擎优化,虽然现在主流的搜索引擎都开始支持动态生成的url,但网站为了排名尽量靠前,还是要尽量配合符合搜索引擎的规则。其次伪静态还可以将比较长的地址转化为相对短一些的地址 ,看着相对舒服点。
.NET MVC实现伪静态的方法:
1.打开Global.asax文件 进入方法 RouteConfig.RegisterRoutes(RouteTable.Routes)
以下是url路由重写
将 /Home/Index 设置为 /Home/Index.html
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}.html",
defaults: new { controller = "Home", action = "Index" }
);
}
继续配置 Web.Config中,为*.html路径配置处理程序 让这类连接 也经过路由过滤规则。
使用单独配置只对*.html进行配置,对于js 样式 字体等静态文件都是走IIS 7.0默认处理程序,符合伪静态规则的.html才进入ASP.NET进行处理。配置如下
<system.webServer>
<handlers>
<add name="Static64" path="*.html" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="Static32" path="*.html" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="(Static) ExtensionlessUrlHandler-Integrated-4.0" path="*.html" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
网上还有一种方式 但据说是影响性能,并不推荐使用 这里还是放上来 如下
<modules runAllManagedModulesForAllRequests="true" />