参考维基百科的解释,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。(http://zh.wikipedia.org/wiki/%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6)。博客或者网站的网址就是平时最常见URI的例子,比如Google主页的URI就是:http://www.google.com.hk/,这里就有一个结尾的斜杠;很常见的另一种形式就是没有结尾的“/”的URI: http://www.google.com.hk,也是我们经常在浏览器地址栏里面输入的形式,而且按回车打开Google主页以后,浏览器的地址栏会自动在最后加上一个”/”。那么究竟这两种URI的形式有什么区别,还是其实就是完全一样的意义呢?
按照RFC文档中对URI的定义,只说明了 “/”斜杠是起到标识URI层级结构的分隔符。而在具体的实现中。Web服务器一般就是把斜杠解释为网站目录下文件目录结构的层级。以这篇博文的URI为例子:如果在浏览器地址栏中输入 /uri-trailing-slash/,那么Web服务器会把uri-trailing-slash看作目录名,会直接去网站根目录的uri-trailing-slash子目录下去寻找缺省的index.htm或者index.php文件打开;而如果输入没有结尾的”/”的URI:/uri-trailing-slash,那么Web服务器会先在网站根目录下面尝试打开名为uri-trailing-slash的文件,如果发现uri-trailing-slash是目录名就会产生一个301重定向到/uri-trailing-slash/,这样的结果就是会减慢一点网页打开的速度,而且对SEO也有一些影响。所以如果URI不是直接指向一个文件的形式(比如/sitemap.xml这样的),那一般都是应该加上结尾的”/”的。对于直接指向一个文件的URI,如果仍然多加上一个结尾的斜杠,就像/sitemap.xml/ 这样,那么Web服务器会把“sitemap.xml”看作一个目录名而不是文件名,所以就会返回404 Not Found错误。
当然以上只是以Wordpress博客没有开启URI静态化地址的情况而举的例子,实际上在开启了静态化地址以后,URI字符串都是由Wordpress博客的index.php处理的,不过比较一下有和没有结尾”/”的URI返回的Http Header,同样也是符合上面所说的情况,Wordpress对没有结尾斜杠的URI会返回一个301重定向到有”/”的URI,所以如果在浏览器地址栏输入/uri-trailing-slash也是可以直接访问本文的URI。
相关文章: