Чтобы ответить на комментарии ... Вы не можете заблокировать имена хостов (субдомены) в robots.txt
, если все субдомены указывают на одно и то же место (один и тот же сайт), если только вы внутренне не переписали эти запросы в другой файл robots-block.txt
. Однако robots.txt
не обязательно предотвращает индексацию , это предотвращает сканирование , и если эти субдомены уже проиндексированы, то они будут оставаться проиндексированными в течение некоторого времени, если вы просто заблокируете ползет .
Вы на общем сервере? Или у тебя есть свой? Это будет проблемой «хоста по умолчанию», если это ваш собственный сервер и ваш сайт является первым (или единственным) хостом, определенным на нем. (Это редкая проблема для общего сервера.) В противном случае это звучит так, как будто у вас есть поддомен «подстановочный знак», определенный в DNS (и соответствующий ServerAlias
в конфигурации сервера).
Удалите подстановочный поддомен, и это решит вашу проблему.
В противном случае вы можете перенаправить (или заблокировать) любые неканонические хосты в .htaccess
. Например:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com
RewriteRule ^ - [F]
Выше будет отправлено 403 Запрещено для любого запроса, который не для example.com
или www.example.com
.
За исключением:
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [NC,R=301,L]
Это не правильно. Это только канонизирует http://example.com
. Он не будет канонизировать / перенаправлять http://www.example.com
или https://example.com
, так как эти два условия неявно AND'd. Вам нужно OR
два условия:
RewriteCond %{HTTP_HOST} ^example\.com [NC,OR]
RewriteCond %{SERVER_PORT} 80
Для соответствия example.com
или http
.