在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态。我们现在在网络上发现很多博客网站、论坛网站、CMS内容管理系统等都有使用伪静态这一种情况,伪静态在地址栏看到的URL地址是以.html结尾的,但实际上却是一个动态的网页,后台可能是Asp.net、Php或者Java动态生成的该页面。
下面简单介绍下ASP.NET MVC5模式下的伪静态的实现。
1、从URL地址来分析,伪静态的网页一般以.html结尾,那我们就需要进行URL重写,这种重写在ASP.NET WebForm模式下稍微复杂点,但在MVC模式下就变得简单,我们只需要添加一个路由规则,该规则的网址以.html界面,并且在规则中加入相应的动态参数。
我们新建个MVC5网站后,默认的路由规则可以查看RouteConfig文件,可以看到规则如下:
在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态。我们现在在网络上发现很多博客网站、论坛网站、CMS内容管理系统等都有使用伪静态这一种情况,伪静态在地址栏看到的URL地址是以.html结尾的,但实际上却是一个动态的网页,后台可能是Asp.net、Php或者Java动态生成的该页面。
下面简单介绍下ASP.NET MVC5模式下的伪静态的实现。
1、从URL地址来分析,伪静态的网页一般以.html结尾,那我们就需要进行URL重写,这种重写在ASP.NET WebForm模式下稍微复杂点,但在MVC模式下就变得简单,我们只需要添加一个路由规则,该规则的网址以.html界面,并且在规则中加入相应的动态参数。
我们新建个MVC5网站后,默认的路由规则可以查看RouteConfig文件,可以看到规则如下:
那我们可以仿造上图中定义规则的形式,定义某个伪静态的路由,我们定义Test控制器下的Url地址为伪静态,定义后的规则如下:
2、定义完MVC的路由,重写URL地址为伪静态只算完成一半,此时IIS对伪静态.html的处理并不如你所愿。众所周知,默认情况下.html以及javascript、css文件等静态资源,请求传入后,是直接交由IIS进行处理的,不会进过你网站代码编译的dll之类处理。
为了使我们定义的伪静态网页不交由IIS直接处理,而是交由ASP.NET MVC网站来内部处理的话,我们需要在webconfig中定义一个配置项,告知IIS针对所有的以.html结尾的网页不做默认处理,而是交由ASP.NET MVC管道处理。为了达到这种效果,我们需要在<system.webServer></system.webServer>中的<handler>节点加入URL重写配置,具体的配置如下:
<handlers> <add name="RewriteHtml64" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFramework64v4.0.30319aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness64" /> <add name="RewriteHtml32" path="*.html" verb="*" type="System.Web.Handlers.TransferRequestHandler" modules="IsapiModule" scriptProcessor="%windir%Microsoft.NETFrameworkv4.0.30319aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness32" /> </handlers>
在上述的两个配置中,我是配置了32位应用程序和64位应用程序的处理方式,scriptProcessor表示具体处理.html伪静态文件的管道程序dll,从后面的aspnet_isapi.dll来看就知道.html文件在此设置项定义后将交由ASP.NET MVC内部来处理。
至此,ASP.NET MVC中伪静态的实现大致完成,相关细节点待读者自行研究。
扩展阅读:目前国内主流的云服务器厂商有哪些_IT技术小趣屋。
备注:原文转载自ASP.NET MVC重写URL制作伪静态网页_IT技术小趣屋。
博主个人技术交流群:960640092,博主微信公众号如下: