Доступ к двум основным разделам моего сайта можно получить, используя:
www.example.com
для общего содержания
laptop.example.com
для более конкретного содержания
Раздел ноутбука готов и развернут. Пользователь может получить к нему доступ напрямую. Кроме того, поисковые системы начали сканировать и индексировать его.
НО, общий контент еще не готов; это не будет в течение нескольких месяцев.
На данный момент на сервере для www нет корневого каталога документов или файлов, и для него нет тега виртуального хоста.
Содержимое httpd.conf:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /path/to/website/subdomain/root
ServerName example.com
ServerAlias laptop.example.com
<Directory /path/to/website/subdomain/root>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>
Здесь нет другого тега виртуального хоста.
В панели управления регистратора доменов я добавил Запись для поддомена laptop
и указал на мой IP-адрес сервера. Есть еще две записи - @
и www
оба указывают на мой IP. Я не могу отредактировать / удалить запись www.
Я думал, что это все, что нужно для предотвращения доступа к www
. Но это не работает!
Когда пользователи вводят www.example.com
, они попадают в laptop.example.com
. Я не хочу, чтобы это случилось. Просто какое-то сообщение об ошибке браузера по умолчанию, например Сервер не найден или Страница не найдена должны быть показаны.
Как я могу этого добиться?
Одно решение: Я добавил следующее в конец httpd.conf
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>
Обратите внимание, что нет корня документа! Это сработало. Я получаю 404, если захожу http://www.example.com или http://example.com. И поддомены работают нормально.
Я не думаю, что это элегантный метод. Все еще жду лучшего / правильного способа сделать это.
ServerName должно быть равно полному имени домена, включая переносной компьютер поддомена. В противном случае будет доступен весь контент.
Затем вы можете создать блок для ServerName laptop.example.com и другой блок с www.example.com с принудительной аутентификацией (пользователи не будут иметь доступа, если у них нет пароля), который также блокирует сканирование Google. Или полностью отключить www.example.com, когда вы используете только laptop.example.com
Пользователи переходят на laptop.example.com, когда они переходят на www.example.com, потому что по умолчанию содержимое laptop.example.com обслуживается для ServerName example.com, который включает в себя laptop.example.com и www.laptop.com. У них будет один и тот же контент, если и www, и портативный компьютер находятся в DNS.
ServerAlias - это только тогда, когда более одного доменного имени необходимо перенаправить на контент, определенный в блоке VirtualHost. Например, если у вас есть laptop1 и laptop2 в DNS, и вы хотите, чтобы для обоих был применен один и тот же VirtualHost.
Надеясь, что это решит вашу проблему ...
ИЗМЕНИТЬ, чтобы ответить на ваш комментарий:
У меня было бы это в моем файле конфигурации:
<VirtualHost 192.168.0.103:80>
ServerName laptop
ServerAlias laptop laptop.example.com
DocumentRoot /var/www/laptop
</VirtualHost>
А затем, если я хочу, чтобы другой контент применялся для второго VirtualHost с именем www, я бы добавил второй абзац, аналогичный этому, но с другим ServerName, ServerAlias, DocumentRoot. Я просто хотел объяснить, что вы можете сделать это с помощью аутентификации, чтобы убедиться, что в процессе разработки вы единственный, кто имеет доступ к вашему VirtualHost.