URL大小写敏感之谜

URL其实就是我们浏览器地址栏的地址,一般由三部分组成:

  1. 协议名称,一般就是http
  2. 域名,也就是主机名
  3. 资源路径

如链接:http://www.w3school.com.cn/js/js_obj_regexp.asp

http是协议部分,www.w3school.com.cn是域名部分,/js/js_obj_regexp.asp是资源路径部分。

  • 对于服务器来说,前两个是大小写不敏感的,但是一般情况下,协议名称和域名部分如果有写成大写的浏览器会在请求的时候帮我们改成小写的,所以服务端后台不用考虑这一点。
  • 实际上大小写是否敏感依赖于操作系统的文件系统。
  • 至于资源路径,对于运行在window系统上的IIS服务器对资源路径大小写不敏感,但是对于运行在Unix和Linux系统上的服务器Apache对资源路径的大小写是敏感的,如果有大小写错误会返回404页面。

大小写不敏感示例:

如:http://www.w3school.com.cn/js/js_obj_Regexp.aSp 是可以访问到的,而且访问成功时地址栏的地址并没有把大写改成小写的。

如果想要解决Apache大小写敏感导致页面访问失败的问题,可以有以下解决方案:

  1. 当访问链接有大小写错误时返回301错误码并提示重定向到正确的链接,可以通过mod_spelling模块实现。
  2. 使用mod_rewrite规则强制进行大写向小写转换

 

另外,如果get请求后面有参数的话,key和value都是大小写敏感的。

posted on 2016-03-18 15:32  nekoooo  阅读(7221)  评论(0编辑  收藏  举报

导航