在搜索引擎优化领域,静态网页对于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中伪静态的实现大致完成,相关细节点待读者自行研究。

扩展阅读:目前国内主流的云服务器厂商有哪些_IT技术小趣屋

备注:原文转载自ASP.NET MVC重写URL制作伪静态网页_IT技术小趣屋

【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾的更多相关文章

  1. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  2. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

  3. ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法

    ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法 近来正在分析淘宝中商品的信息,效果发生乱码,如: 原因便是中文字符格式发生冲突,ASP.NET MVC 默认采用utf-8,可是淘宝网页采用g ...

  4. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  5. ASP.NET MVC:自定义 Route 生成小写 Url(转)

    先给出本文中测试用的 controller: public class PersonsController : Controller { public ActionResult Query(strin ...

  6. [转载] ASP.NET MVC (一)——深入理解ASP.NET MVC

    个人认为写得比较透彻得Asp.net mvc 文章,所以转载过来,原文链接在最后: ASP.NET vs MVC vs WebForms 许多ASP.NET开发人员开始接触MVC认为MVC与ASP.N ...

  7. 转载——Asp.Net MVC+EF+三层架构的完整搭建过程

    转载http://www.cnblogs.com/zzqvq/p/5816091.html Asp.Net MVC+EF+三层架构的完整搭建过程 架构图: 使用的数据库: 一张公司的员工信息表,测试数 ...

  8. 转载ASP.NET MVC 和ASP.NET Web Form简单区别

    转载原地址 http://www.cnblogs.com/lei2007/p/3315431.html 概论: Asp.net  微软 提供web开发框架或者技术.分Web Form和ASP.NET  ...

  9. 转载 ASP.NET MVC中使用ASP.NET Identity

    转载原地址: http://blog.jobbole.com/90695/ 在之前的文章中,我为大家介绍了OWIN和Katana,有了对它们的基本了解后,才能更好的去学习ASP.NET Identit ...

随机推荐

  1. centos为docker配置加速器

    国内拉去docker镜像慢得可怜,为了解决这个问题,可为docker配置加速器. 1.修改daemon配置文件 sudo mkdir -p /etc/dockervim /etc/docker/dae ...

  2. .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

    如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...

  3. 【DFS】求水洼的数目

    题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) *** *W* *** 限制条件:N, M ...

  4. 十几分钟让你学会MySQL布尔和延迟盲注手工操作

    作者:Max老白Gān丶链接:http://www.lofter.com/lpost/1fefbc76_12d25dc31来源:LOFTER 注入常用到的几个函数   1 mid(str,1,3) 字 ...

  5. #Java学习之路——基础阶段(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...

  7. PHP算法之冒泡排序

    //冒泡排序 //①思路,先比较出第一次,找一个最大的值,排到最后; //②重复count遍之后,就能得到排序; //③优化,每一次循环之后不需要再次全部重复; $array = [11,5,4,58 ...

  8. python-os模块使用

    1.合并路径 os.path.join("c:\\music\\ap\\0","mav.mp3") 'c:\\music\\ap\\0\\mav.mp3' 2. ...

  9. ThinkPHP 数据库操作(六) : 查询事件、事务操作、监听SQL

    查询事件 查询事件(V5.0.4+) 从 5.0.4+ 版本开始,增加了数据库的CURD操作事件支持,包括: 查询事件仅支持 find . select . insert . update 和 del ...

  10. 利用U盘安装win2008r2系统的步骤

    我们在公司或者家里,经常要安装各种系统,最近公司需要重新安装win2008r2系统.折腾了一天的时间,终于把系统装好了.将安装的步骤记录下来,方便大家查看,自己也做个记录. 1 准备win2008r2 ...