2014-01-14 19 views
1

Gethostbyname給我一個een網站的IP地址,當我在瀏覽器中使用它時,我會去那個網站。 如果我嘗試與共享主機上的網站相同的事情,我得到了appachi正常工作。當ip來自共享主機時,我如何獲得gethostbyaddr的Url?

這裏我的問題是,當我使用IP與gethosbyaddr它給了我一個網址ADRESS。爲什麼當我在瀏覽器中使用IP地址時,我沒有得到網站,但當我將其轉換回來時,我得到了一個網址,我得到了正確的網站。他如何知道在共享主機上給我什麼URL。該IP地址沒有301重定向。

回答

1

Apache使用虛擬主機,共享託管服務器上有許多網站,其解析到同一個IP地址,虛擬主機,然後決定根據URL顯示哪些網站。

因此,例如:

www.example1.com解析爲1.2.3.4 - 在地址欄輸入的時候,看到1.2.3.4的要求是www.example1.com和顯示來自/文件var/www/vhosts/example1.com/httpdocs

www.example2.com解析爲1.2.3.4 - 在地址欄中輸入時,1.2.3.4看到請求是www.example2.com並顯示來自/var/www/vhosts/example2.com/httpdocs的文件

1.2.3.4解析爲1.2.3.4 - 在地址欄中輸入時,1.2.3.4看到請求是針對1.2.3.4,但該d在虛擬主機中沒有記錄,所以默認顯示「Apache正在工作」頁面。

1

共享主機託管在同一IP地址的幾個不同的域。他們區分這些域的方式是使用HTTP標頭Host。即當訪問這樣的網站時,瀏覽器明確地發送它自己在HTTP請求中尋找哪個域。這就是爲什麼當你只訪問IP時它不起作用。

因此,這樣的域轉換成IP地址是微不足道的。反過來基本上是不可能的,因爲有很多領域。你會得到答案是一種幸運抽獎。

+0

但我每次都得到相同的網址? – Oktay

+0

我並不完全確定,但我相信它使用DNS系統來獲取這些信息,它可能取決於您最近的DNS服務器的緩存。在您的測試中,您可能以前使用過相同的域,並且它位於緩存中,但這不能保證。 – deceze