2010-04-05 73 views

回答

0

就協議而言,http://example.com/somethinghttp://example.com/something/是完全不同的。如果以這種方式實施,某些服務器可能會將您從一個服務器重定向到另一個服務器。

至於純粹的域名,它總是發送一個以斜線結尾的請求。 (域名本身並不包含在HTTP請求的路徑部分,就像Greg Hewgill和其他人寫的一樣,但是包含在標題中)

您可以使用類似工具提琴手或WireShark。

+0

這是不正確。 '/ something /'與HTTP中的'/ something'不同。 http://googlewebmastercentral.blogspot.com.es/2010/04/to-slash-or-not-to-slash.html – Ryall 2015-03-04 16:32:01

+0

@Ryall編輯我的答案澄清。 – Venemo 2015-03-07 14:50:39

28

從瀏覽器發送到服務器的HTTP請求不包含域名,只包含「路徑」部分(從域名後的第一個斜槓開始)。由於路徑不能爲空,因此在這種情況下發送/

一個網站的根的樣品GET請求可能是:

 
GET/HTTP/1.0 

上述/不能省略。

+1

爲了澄清這一點,域被髮送到'Host'頭(僅限HTTP 1.1)。 – jholster 2010-04-05 21:56:11

+0

所以你說的是,即使你有一個空的路徑,該網址保證有一個尾部斜槓? – Hank 2010-04-05 21:57:21

+3

@Hank:我說的是*如果*你有一個空路徑,發送一個'/'。如果路徑部分是* not * empty(在這種情況下,瀏覽器正好發送URL欄上的內容,但服務器可能會選擇在其響應中重定向瀏覽器),則這並不會說明有關尾部斜線的任何內容。 – 2010-04-05 21:58:16

9

請注意,這是一個very different事當URL有一個路徑元素:

http://example.com/dir 

不同的URL

http://example.com/dir/ 

,並可能實際上包含不同的內容,並有不同的搜索引擎排名。

+0

這是一個很好的觀點。建議使用「/」 – 2010-04-05 22:01:14

+3

@Claudio來結束網址,請參閱一些參考資料? – jholster 2010-04-05 22:03:09

+0

@Yaggo:看看谷歌「尾部的斜槓url」。我不記得我讀過一個地方,對不起人。 – 2010-04-05 22:14:23

15

如RFC 2616告訴:

3.2.2 HTTP URL

的 「HTTP」 方案用於通過HTTP
協議來定位 網絡資源。本節定義了針對http URL的 特定於語言的方案語法和
語義。

http_URL =「http:」「//」host [「:」 port] [abs_path [「?」查詢]]

如果端口爲空或未給定,則假定端口80爲 。語義
是標識的資源是 位於服務器監聽該 主機的端口上 TCP連接,並請求URI的 資源是絕對路徑(5.1.2節)。 如果可能,應儘量避免使用URL中的IP地址 (請參閱RFC 1900 [24])。如果 abs_path不存在於URL中,那麼當 請求URI用於資源( 5.1.2)時,它必須以「/」的形式給出。如果代理收到的主機名稱不是完全合格的 域名,則可以將其域名 添加到其收到的主機名稱。如果 代理收到完全限定的 域名,則代理不得更改主機名稱 。

瞭解更多:http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGbpjYWa

5.1.2請求URI
...
例如,希望在客戶端上面直接從 源服務器將創建一個檢索 資源TCP 連接到主機的端口8 「www.w3.org」,併發送行:

GET /pub/WWW/TheProject.html HTTP/1.1 
    Host: www.w3.org 

後面跟着 請求的其餘部分。 請注意,絕對路徑 不能爲空;如果原始URI不存在於 中,則它必須被賦予 作爲「/」(服務器根目錄)。

瞭解更多:http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU