当前位置: 移动技术网 > IT编程>开发语言>.net > 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾

【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾

2019年03月31日  | 移动技术网IT编程  | 我要评论

工程图,花草茶配方,天安门车祸

 在搜索引擎优化领域,静态网页对于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.net\framework64\v4.0.30319\aspnet_isapi.dll" resourcetype="unspecified" requireaccess="script" precondition="bitness64" />
      <add name="rewritehtml32" path="*.html" verb="*" type="system.web.handlers.transferrequesthandler" modules="isapimodule" scriptprocessor="%windir%\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll" resourcetype="unspecified" requireaccess="script" precondition="bitness32" />
    </handlers>

在上述的两个配置中,我是配置了32位应用程序和64位应用程序的处理方式,scriptprocessor表示具体处理.html伪静态文件的管道程序dll,从后面的aspnet_isapi.dll来看就知道.html文件在此设置项定义后将交由asp.net mvc内部来处理。

至此,asp.net mvc中伪静态的实现大致完成,相关细节点待读者自行研究。

 

备注:原文转载自。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网