почему мой блог нельзя посетить по IP-адресу?

почему мой блог нельзя посетить по IP-адресу?

Я создаю WordPress на wisdom.host22.com/wp, его можно посетить wisdom.host22.com/wpв Firefox.

введите описание изображения здесь

ping wisdom.host22.com
PING wisdom.host22.com (31.170.160.189) 56(84) bytes of data.
64 bytes from 31.170.160.189: icmp_seq=1 ttl=46 time=307 ms

По результатам ping IP-адрес домена — 31.170.160.189.

Невозможно посетить, чтобы ввести 31.170.160.189/wp в Firefox, почему? Когда вводишь 31.170.160.189/wpв Firefox, URL перейдет в http://error404.000webhost.com/,why?

введите описание изображения здесь

решение1

Ваше приложение WordPress — один из многих веб-сайтов, размещенных на host22.com.

Существует веб-сервер, прослушивающий IP 31.170.160.189и обслуживающий вашу и все остальные страницы.

Если сервер напрямую запрашивается по его IP, как он должен знать, какой веб-сайт обслуживать? IP не принадлежит исключительно вашему поддомену. В результате вы перенаправляетесь на страницу 404 NOT FOUND.

Когда он запрашивается с помощью правильного имени хоста, например wisdom.host22.com, он знает, что делать, поскольку имя хоста является частью HTTP-запроса, который делает браузер. Обслуживание контента в зависимости от заголовка запроса является распространенной техникой, обычно называемой «виртуальным хостом». Таким образом, веб-сервер может предоставлять множество различных веб-сайтов с одного и того же IP-адреса.

Вы можете попробовать разницу в поведении из командной строки.

Сначала давайте запросим ресурс /wpс веб-сервера и отправим его IP-адрес в виде Host:

$ echo -e "GET /wp/ HTTP/1.1\nHost: 31.170.160.189\n" | netcat 31.170.160.189 80
HTTP/1.1 302 Found
Date: Sun, 11 Oct 2015 09:05:30 GMT
Server: Apache
Location: http://error404.000webhost.com/?
Content-Length: 216
Connection: close
Content-Type: text/html; charset=iso-8859-1

Как и ожидалось, сервер отвечает отправкой 404страницы.

Теперь сделайте то же самое, но с Hostправильными настройками вашего поддомена.

$ echo -e "GET /wp/ HTTP/1.1\nHost: wisdom.host22.com\n" | netcat 31.170.160.189 80
HTTP/1.1 200 OK
Date: Sun, 11 Oct 2015 09:08:50 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
X-Pingback: http://wisdom.host22.com/wp/xmlrpc.php
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

На этот раз сервер может выполнить команду (код состояния 200 OK) и обслуживает вашу домашнюю страницу WordPress.

Команда netcatоткрывает соединение с сервером на порту 80. Затем запрос ( echoчасть) отправляется на сервер. HTTP — это протокол открытого текста. Вы можете просто «поговорить» с сервером.

решение2

Когда вы отправляете HTTP-запрос на сервер, в него включена строка хоста. Когда Apache получает ее, он отправляет ее на любой виртуальный хост, определенный для этого адреса, как описано здесь:

https://serversforhackers.com/configuring-apache-virtual-hosts

Таким образом, если на созданном вами сервере есть виртуальный хост для wisdom.host22.com, ввод имени хоста перенесет вас туда, но ввод IP-адреса перенесет вас на виртуальный хост по умолчанию, который в данном случае, по-видимому, не был определен.

Надеюсь, это помогло.

Связанный контент