Я создаю 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
IP-адрес домена 31.170.160.189 по результатам проверки связи.
Его нельзя посетить, чтобы ввести 31.170.160.189/wp в firefox, почему?
Когда вводить 31.170.160.189/wp
в firefox, URL-адрес перейдет на
http://error404.000webhost.com/, почему?
Ваше приложение 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
[ 1119] Как и ожидалось, сервер отвечает, предоставляя страницу 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 - это открытый текстовый протокол. Вы можете просто «поговорить» с сервером.
То, когда Вы отправляете запрос HTTP к серверу есть линия хозяина, включенная в него, когда апач получает это, это посылает его любому виртуальному хозяину, было определено для того адреса, как объяснено здесь:
https://serversforhackers.com/configuring-apache-virtual-hosts
Поэтому, если в сервере Вы создали, есть виртуальный хозяин к wisdom.host22.com, печатение имени хоста возьмет Вас там, но печать IP возьмет Вас к дефолту виртуальный хозяин, которым в этом случае, это кажется, не был определен.
я надеюсь, что это помогло.