Как отключить доступ к 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

Другие вопросы по тегам