博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不走标准路的微软:少一个斜杠的URI Path
阅读量:6657 次
发布时间:2019-06-25

本文共 1135 字,大约阅读时间需要 3 分钟。

今天又被微软不按标准的做法折腾了一下,写篇博文抱怨一下。

我们先来看一下IETF(Internet Engineering Task Force)对URI结构的标准定义():

URI

注意上面的path部分(/over/there)是包含开头的斜杠的。

而微软的眼中偏偏少了开头的这个斜杠——over/there。

当你用微软的IIS Url Rewrite module写匹配规则时,必须要把开头的这个斜杠排除在外。

当你在ASP.NET MVC中用routes.MapRoute写路由规则时,必须要把开头的这个斜杠排除在外。

当你面对这样的URI(http://www.cnblogs.com/)时,匹配规则要写为^$。

如果抛开标准不谈,仅仅从使用直觉上,“/over/there”也比“over/there”更合理,因为通过开头的“/”可以直觉地知道是从根路径开始的,“over/there”给人的直觉就是一个相对路径。

如果你是一位长期使用微软平台的程序员,由于习惯原因可能体会不深;但如果你是从非微软平台转过来的程序员,会很不习惯。

而我今天被折腾,不是因为从非微软平台到微软平台,而只是从Helicon Tech的ISAPI_Rewrite到Microsoft的IIS Url Rewrite module。

今天在将一个站点从IIS 7.5(Windows Server 2008 R2)迁移至IIS 8.0(Windows Server 2012)后(顺带吐槽一下IIS 8.0竟然与IIS 7.5的配置文件不兼容),发现ISAPI_Rewrite在某些重写规则下会引发IIS应用程序池崩溃(503错误),只能改用IIS Url Rewrite module。

IIS Url Rewrite module支持从ISAPI_Rewrite的httpd.ini配置文件中导入Url重写规则,但就是因为微软眼中的URI Path与众不同,不得不对每条规则进行修改。之前,博客站点就被这个问题折腾过,今天再次被折腾,心里很不舒服,所以写博客一吐为快!

作为一名长期使用微软平台的程序员,即使没遇到这个URL重写问题,我也对URI Path中少一个斜杠很不习惯!

【补充】

在微软的Url Rewrite module的帮助文档中,可以找到微软心目中的URI标准是这样的:

For an HTTP URL in this form: http(s)://<host>:<port>/<path>?<querystring>

转载于:https://www.cnblogs.com/dudu/p/microsoft-uri-path-without-slash.html

你可能感兴趣的文章
存储过程详解
查看>>
【MPI】矩阵向量乘法
查看>>
【块状树】bzoj3731 Gty的超级妹子树
查看>>
序列化作用
查看>>
[JUC-3]ReentrantLock源码分析
查看>>
centos 安装gcc 与 g++方法
查看>>
// FileStream 读取和写入一个文件,一点点读取,可以按照指定读取字节大小读取, //FileStream(文件夹名字,创建的模式,读取的形式)他是一个非静态类,所以用new创建...
查看>>
语法分析-C语言程序
查看>>
FluentData 轻量级.NET ORM持久化技术详解
查看>>
C++ If学习笔记(4)
查看>>
数据库
查看>>
(转)jqGrid的数据格式化
查看>>
Jquery Mobile表单
查看>>
Python内置函数
查看>>
实验1 命令解释程序的编写
查看>>
Ubunut18.04与Windows传输文件的方式
查看>>
正则表达式
查看>>
robotium做划屏操作函数scrollToSide ,坑爹
查看>>
EXTJS4-----前言
查看>>
php parse_str() 函数
查看>>