Как отключить доступ к www.example.com, но сделать laptop.example.com активным
Доступ к двум основным разделам моего сайта можно получить с помощью:
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>
Там нет другого тега виртуального хоста там.
В панели управления регистратора моего домена я добавил запись A для субдомена 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/. И субдомены работают просто отлично.
Я не думаю, что это элегантный метод. Все еще жду лучшего / правильного способа сделать это.
1 ответ
Имя_сервера должно совпадать с полным доменным именем, включая субдомен ноутбука. В противном случае весь контент будет доступен.
Затем вы можете создать блок для 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. Например, если в DNS есть laptop1 и laptop2 и вы хотите, чтобы один и тот же 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