比如http://www.example.com和http://www.example.com/

從任何角度來看,這兩者之間有區別嗎?


前者是後者的省略形式,用瀏覽器(或命令行工具,比如 curl )訪問這個URL時,沒有任何區別。

典型的URL包含幾個部分:

  1. scheme:或者可以翻譯成方案,指的是協議部分,這裡就是 http。
  2. 主機與埠:一般形式是 hostname:port,如果 port 是80,可以省略。
  3. 資源路徑:就是 /path/to/xxx 這樣的形式,最簡單的路徑就是 / 。根據 HTTP 協議,如果沒有指定路徑,則就等同於指定了 / 這樣的路徑。


有/會認為是目錄,沒/會認為是文件。

加了/瀏覽器會指向一個目錄,目錄的話會讀取默認文件index等等。沒有/會先嘗試讀取文件,如果沒有文件再找與該文件同名的目錄,最後才讀目錄下的默認文件。

網址沒有加上/會給伺服器增加一個查找是否有同名文件的過程。


https://www.ietf.org/rfc/rfc1630.txt

有區別的

RFC 1630 URIs in WWW June 1994

Note: Trailing slashes

If a path of the context locator ends in slash, partial URIs are
treated differently to the URI with the same path but without a
trailing slash. The trailing slash indicates a void segment of the
path.


有區別:不加「/」的url,請求的時候,會向伺服器請求2次,同一時間數量過多的話,會給伺服器造成壓力,建議加上「/」。


一個是相對 一個是絕對
從網址的規範化來看,搜索引擎會認為是2個頁面,雖然打開的頁面是一樣的

http://www.example.com/這種 bare domain URL(通俗點講話,主頁) 的話,所有主流的瀏覽器都會在Request上添加一個slash.所以說你的這個例子中加不加都是沒有區別的。

但是,URL並不只是bare domain URL ,如果是http://www.example.com/test 這種形式,伺服器端route沒設置好的,你加一個slash可能就會無法找到路徑。
感覺有區別。具體是什麼就不知道。今天項目用shiro +/ 的資源shiro不能正常攔截,有沒有人知道這是怎麼回事?


推薦閱讀:
相关文章