设为首页 收藏本站
查看: 725|回复: 0

[经验分享] IIS URL Rewriting 和 ASP.NET routing(下)

[复制链接]

尚未签到

发表于 2018-12-10 06:47:03 | 显示全部楼层 |阅读模式
  

在IIS URL Rewriting 和 ASP.NET routing(上)中,我们针对IIS URL Rewriting 和 ASP.NET routing的理念和功能分别进行分析并进行对比,在清楚了这些基本原理和异同之后,我们该如何在应用中挑选合适的URL优化方案呢?在本文中,我们将对此进行探讨分析,并例举几种两者协同应用的案例。
本文翻译自IIS官方网站,针对国内惯用的术语进行了部分调整。

我们该如何选择?

首先,如果我们的Web应用程序有任何除了ASP.NET之外的动态网页技术,那么选择是绝对明显的:用IIS URL重写模块(IIS URL-rewrite module)。否则的话,主要判断规则如下:


  • 如果我们的ASP.NET Web应用程序使用了ASP.NET MVC 或者 ASP.NET Dynamic Data 技术的话,请使用ASP.NET路由。我们的应用程序URL优化过程将从原生支持中获益(ASP.NET MVC 和ASP.NET Dynamic Data直接包含ASP.NET Routing)。早期的ASP.NET 路由不支持WebForm,而目前的版本已经支持标准的Web Form应用程序了。详见此地。
  • 如果我们是基于一个已有的ASP.NET网站,而希望尽量不去更改它的话,请使用URL重写模块。因为URL重写模块能够在不更改现有程序的基础上对网站提供“用户友好”“搜索引擎友好”的URL。同样,它也允许我们创建重定向规则,用来重定向搜素引擎的爬虫到新的URL去。

然而在实践中这两种技术并不是只能选择一个,他们往往还可以相辅相成。在接下来的章节中,我们将概述几个协同使用ASP.NET路由和URL重写模块的案例。

为网站强制实施标准的URL

举个例子,比如我们想强制使用http://www.mysite.com/home/about 来替代 http://mysite.com/Home/About。 当客户端请求一个不符合标准格式的URL时,客户端奖杯跳转到一个符合标准格式的URL。在这种情况下,我们可以使用URL重写模块来强制URL跳转,而使用ASP.NET 路由来选择一个handler来处理所请求的URL路径。
下面的代码展示了这个案例中可能用到的URL重写模块配置代码:














提供来自其它网站或其它服务器上的静态内容
例如,我们的网站部署在多台服务器上,而动态页面的内容部署在一台服务器或一个网站上,而所有的静态内容部署在另一台服务器或另一个网站上。这时,我们可以使用URL重写模块协同IIS Application Request Routing module 来将对镜头内容的请求转到静态内容服务器(网站)上去,而由当前服务器处理所有的动态网页请求。这中环境下,ASP.NET 路由恰好只对所有的动态网页内容起效,而不对静态内容其效果。
下面的代码展示了这个案例中可能用到的URL重写模块配置代码:











静态内容管理
当我们网站中的静态内容移动到了一个新的地址时,我们常常还需要支持老的URL,以做到向后兼容,甚至我们并不想让用户感觉到文件或文件夹移动过了。这种情况下,我们可以使用URL重写模块来重写静态文件的路径,同时使用ASP.NET路由来处理所有的动态ASP.NET页面。
下面的代码展示了这个案例中可能用到的URL重写模块配置代码:











阻止某些请求
URL重写模块可以用来阻止某些情况下指定的请求,例如,我们可以阻止网站爬虫访问某些特定的URL路径。这种情况下,我们让被阻止的请求压根不到达ASP.NET的路由处理,如此来减少服务器的负载。
下面的例子展示了如何配置URL重写规则,来阻止一个指定的网站爬虫。可以根据指定的user-agent HTTP头或者IP地址来进行阻止:
















发展方向

尽管IIS URL重写和ASP.NET路由在功能上有一些重复,但它们在情景定位上和技术上是相互独立的。因此,这两种技术将作为IIS的独立组建持续存在并进一步发展,并且,两者有很大的集成潜力。例如,ASP.NET路由可能会参照URL重写模块强大的管理工具。而URL重写模块可能会与ASP.NET更好的集成,以提供更强大的扩展性和可自定义性。

结论

IIS URL重写和ASP.NET路由都能够用于Web应用程序的URL优化处理,但ASP.NET路由可以看作是一种ASP.NET的优化解决方案,因此,它是web开发人员设计友好URL的应用程序时的好选择。而IIS URL重写模块是一个通用的URL处理机制,定位于多种技术场景,特别是它能够让web开发人员和网站管理人员能够在不改动程序代码的情况下优化URL。

相关文档


  • URL-rewrite module documentation and tutorials
  • ASP.NET routing documentation
  • ASP.NET MVC
  • ASP.NET Dynamic Data

参考阅读


  • Using URL Rewrite Module
  • Provide URL Rewriting Functionality
  • Rule with Rewrite Map - rule template
  • IIS URL Rewriting and ASP.NET routing






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-649557-1-1.html 上篇帖子: IIS URL Rewriting 和 ASP.NET routing(上) 下篇帖子: iis 目录权限
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表