在搜索引擎优化领域,静态网页对于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. SSIS - 6.序列容器和优先约束

    一.多样的优先约束(看例子) 1)打开一个空白的SSIS包,拖拽4个脚本任务到设计面板上,重命名后连接起来,如下图所示. 2)执行包,可以看到任务执行成功.之后我们改变C和D之间的优先约束为“失败”. ...

  2. Java 2018 面试

    1.Java的引用有什么作用?传递的是什么? Java的引用可以用来操作对象,传递的是对象的地址 2.引用分为几种?他们的区别是什么?弱引用用在什么地方? 分四种:强引用 . 软引用 . 弱引用 . ...

  3. MyEclipse最新版-版本更新说明及下载 - MyEclipse官方中文网

    http://www.myeclipsecn.com/learningcenter/myeclipse-update/ [重要更新]MyEclipse 2015正式版发布 [重要更新]MyEclips ...

  4. 【盛派周三分享-2019.2.20】开放分享内容,本期主题:《SCF、DDD及相关架构思想讨论》

    “周三分享”是盛派网络约定的每周三晚上定时举办的内部分享活动,活动主要由技术人员分享各方面的技术主题,并由所有参与者围绕主题进行讨论.除技术话题外,也可能涉及到相关的设计.财税.金融.政策等方面的延伸 ...

  5. dattime和timestamp的异同

    相同点: 1)都可以用来表示YYYY-MM-DD HH:MM:SS[.FRACTION]的时间; 不同点: 1)两者的存储方式不一样 a)timestamp他把客户端插入的时间从当前时区转化为UTC( ...

  6. 判断二叉树是否BST

    一.问题: 请实现一个函数,检查一棵二叉树是否为二叉查找树.给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树. 二.思路: 解法一:从根节点开始遍历二叉树, ...

  7. [Swift]LeetCode89. 格雷编码 | Gray Code

    The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...

  8. This relative module was not found:

    晚上项目敲完,关机睡觉!  早上醒来-----打开项目,惊呆了 !This relative module was not found: 如图   这个报错,我当时怎么也没看懂!!!   后来经过测试 ...

  9. GenerationType四中类型

    https://blog.csdn.net/u011781521/article/details/72210980 JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. ...

  10. 有点深度的聊聊JDK动态代理

    在接触SpringAOP的时候,大家一定会被这神奇的功能所折服,想知道其中的奥秘,底层到底是如何实现的.于是,大家会通过搜索引擎,知道了一个陌生的名词:动态代理,慢慢的又知道了动态代理有多种实现方式, ...