最近在做一个网站内容dispatch的东西。然后搭配公司的lb服务。遇到很多坑。发现在网址后面加上/
和不加有一些区别。自己瞎搞了半天,总结一下。
/
的意义
核心的概念:
- 最后添加
/
是查询目录 - 最后不添加
/
是查询文件
比如说我们的网站地址www.kami_home.com
。
-
www.kami_home.com/content
表示默认查询网站根目录下的content文件 -
www.kami_home.com/content/
表示默认查询网站根目录下的命名为content
的子目录。
这里还有几点需要注意:
- 网站末尾添加
/
能够加快网站的载入速度(seo优化)
通过/
,浏览器直接在该目录(默认访问目录)下寻找默认的index.html
等文件。 如果未添加/
,则会- 首先,读取根目录下的一个文件(随机,有index可能会显示index)
- 未找到该文件,则会查找同名的目录。如果存在,则读取其内的默认文件(index)
如果不添加/
,则会一直增加一个查询同名文件的过程(当然如果本身意在如此,那就没问题)。这里如果没有/
,而且没有找到该文件,服务器会执行301的跳转到带/
的目录请求。
- seo:添加
/
能够避免重复内容。 - url解析错误(404 not found错误),添加
/
是一个非常良好的习惯。
跳转的情况,在细说一下,如果是POST请求,然后使用未添加的/
的url。同时,并没有相关匹配的话,可能会发现服务器catch到的请求变成了GET,同时参数也不见了。
这个就是因为请求被默默的redirect到了带/
的情况,同时并没有配置相关的处理方式,比如继续以POST的形式进行转发(POST /check? -> POST /check/?)。
常见的现象:
- 在浏览器地址栏输入网站地址后,回车会默认添加一个
/
- 有些浏览器会自动隐藏网站末尾的
/
- 有些网站会设置URL重写,自动加上
/
- 有些网站会增加302跳转,到
/
的版本