给网址结尾加上反斜杠

最近浏览有关互联网的资讯多了,发现了一个不少人提到的问题,为什么网址结尾会加上反斜杠呢?又为什么我们在浏览器地址栏上打出一个网址(如我的主页kayosite.com),按回车后地址末尾会自动加上一个反斜杠(部分浏览器如chorme会自动隐藏网址末尾的反斜杠)。很诡异是吧!好了,进入正题,推广一下小知识。

 

在传统意义上说,网址末尾是没有反斜杠的。有没有反斜杠的意义在于该url是指向一个文件还是一个目录,例如:

 

http://kayosite.com/fxg ? ?指向的是网站根目录下一个名为fxg的文件

http://kayosite.com/fxg/ ?指向的是网站根目录下一个名为fxg的目录

 

于是在网址末尾加了反斜杠是能加快网站载入,因为网址末尾加了反斜杠会直接告知浏览器现在指向的是一个目录,浏览器就能直接读取该目录下如index或home等默认文件。而没有加上反斜杠时浏览器首先会尝试读取根目录下的一个文件,如果没有该文件再查找一个与该文件同名的目录,最后才读取目录下的默认文件。这样一来加上反斜杠就会加快网站加载速度。对于网站所在的服务器,网址没有加上反斜杠会给服务器增加一个查找是否有同名文件的过程,这明显会增加服务器的负担,当然这个影响并不会很大,但如果你的网站的直接流量很大,那么给url末尾加上反斜杠便能较大的减轻服务器的负担了。

 

当然给网址末尾加上反斜杠还有其他的好处:

 

1.在seo方面考虑,习惯性的给自己网站的网址末尾加上反斜杠能避免重复内容。正如域名中是否带”www”的问题,url末尾是否有反斜杠也会造成重复内容的问题,这对于网站的seo无疑是不利的,要知道,重复内容绝对是seo的大忌。

 

2.因为服务器对url不能正确解析,有可能会出现404错误,习惯地给网址末尾加上反斜杠则可以避免这种情况。

 

总的来说给网址末尾加上反斜杠对对网站建设者是有很大好处的,这可以说是网站建设者应该养成的一个好习惯。当然,在交换友情链接时别忘了提醒一下对方,记得为你的网站url末尾加上反斜杠了。

 

最后附上Apache开启自动将不同的url以301重定向至一个标准的url上的.htaccess代码(前提是你的服务器开启了mod_rewrite,至于IIS,就没有方便的方法去实现这个功能了):

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$?http://kayosite.com/$1/?[L,R=301]

 

说明:
* RewriteCond %{REQUEST_FILENAME} !-f : 指定操作仅针对目录,对指向文件的url不进行rewrite操作;
* RewriteCond %{REQUEST_URI} !(.*)/$ :判断url是否以斜杠“/”结尾;
* RewriteRule ^(.*)$?http://kayosite.com/$1/?[L,R=301] : 自动将符合上述条件的url以301跳转重定向至以斜杠结尾的版本,比如说将“http://kayosite.com/fxg”重定向至 “http://kayosite.com/fxg/”,其中“L”指该行为规则的最后一行,而“R=301”则指明采用301 Redirect。当然,您在使用时应将“http://kayosite.com/”替换成自己网站的url。

 

本文由 Kayo Lee 发表,本文链接:http://kayosite.com/add-backslash-at-end-of-url.html

评论列表

  • 评论者头像
    回复

    这个我倒是没有留意过

    • 评论者头像
      回复

      嗯,这是很多人容易忽略的地方

  • 评论者头像
    回复

    好的东东总是叫人回味!

  • 评论者头像
    回复

    我空间里没有htaccess这个文件,新建了,刷新后还是不显示,怎么回事啊? 8-O

    • 评论者头像
      回复

      @瘦腿精油 这个原因有很多种呢,可能是你的空间不是使用apache,或者是你的主机商不允许你自定义htaccess,国内的虚拟空间就大多是这样,建议你联系你的主机商吧!

  • 评论者头像
    回复

    你确定不输入结尾斜杠的时候,这个定位文件的过程是浏览器在查找而不是服务器?如果浏览器先搜索文件,再搜索目录的话,那会有很多次的请求。

    我在nginx的conf里面看到这句

    try_filse $uri $uri/ /index.php?$args;

  • 评论者头像
    回复

    你这个RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$?http://kayosite.com/$1/?%5BL,R=301%5D
    写了之后 虽然说解决了自动带反斜杠的问题,但是,整站.html页面的伪静态都没了

回复

你正在以游客身份访问网站,请输入你的昵称和 E-mail
:wink: :roll: :oops: :mrgreen: :idea: :cry: :?: :-| :-o :-P :-? :) :( 8-O