『QQ:1353814576』

.NET MVC网站路由伪静态设置方法


MVC下自定义路由规则实现伪静态

时下很多门户网站或者各大电商平台的网站的链接最后都是.htm或者.html结尾 , 不免让人疑惑难道这些网站的页面全都是静态页面吗!显然不可能,对于小型的企业展示网站倒是可以行得通,毕竟数据量小同时数据基本也是不会怎么改动的,但对于淘宝 京东这类 亿 + 数据级的网站 来说显然不可能。有无数个页面都各自对应一个Html,在商品每时每刻都可能被更新的情况下,即时有专门的人员负责 ,上亿的数据可想而知;

伪静态好处: 一是 有利于搜索引擎排名那就是SEO(Search Engine Optimization)即搜索引擎优化,虽然现在主流的搜索引擎都开始支持动态生成的url,但网站为了排名尽量靠前,还是要尽量配合符合搜索引擎的规则。其次伪静态还可以将比较长的地址转化为相对短一些的地址 ,看着相对舒服点。

.NET MVC实现伪静态的方法:

1.打开Global.asax文件 进入方法 RouteConfig.RegisterRoutes(RouteTable.Routes)

以下是url路由重写

.NET MVC网站路由伪静态设置方法

将 /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" />