На мой сайт можно получить доступ как с
www.mysite.com/
Я бы предпочел только первый способ. Могу ли я запретить доступ к моему сайту по IP?
Я использую Litespeed и могу настроить его с помощью файлов .htaccess.
Простой ответ - иметь перенаправление виртуального хоста по умолчанию на один из других ваших виртуальных хостов. К сожалению, я не знаю, как это сделать с litespeed, но с apache у вас будет несколько виртуальных хостов, с первым в списке по умолчанию и другими виртуальными хостами на основе имен, перечисленными после этого. Когда заголовок Host: соответствует одному из виртуальных хостов, он будет обслуживаться ими. Когда вы подключаетесь через IP-адрес, он не будет соответствовать ни одному из имен виртуальных хостов и будет использовать первое. На этом виртуальном хосте у вас есть перенаправление на имя хоста, к которому вы хотите, чтобы пользователи подключались.
Это действительно требует, чтобы клиенты использовали HTTP 1.1, но редко бывает, что клиент этого не делает.
Ваш сайт будет всегда быть доступным через свой IP-адрес всякий раз, когда браузер запрашивает http: //x.y.z.w URL. Однако с помощью mod_rewrite (Apache) вы можете перехватывать каждый HTTP-запрос и перенаправлять на http://www.mysite.com URL. Так что любой запрос на http: //x.y.z.w/whatever перенаправит на http://www.mysite.com/whatever. Если сайт доступен в Интернете и для вас важна индексация Google, вам нужно сделать 301 (постоянное) перенаправление, чтобы страницы индексировались по имени.
Пример правила перезаписи можно найти по адресу http://www.webmasterworld.com/apache/3238805.htm.
# перенаправить на запрошенную страницу в каноническом домене
RewriteRule ^ / (. *) $ http://www.mysite.com/1 доллар США [R = 301, L]
Вам потребуются заголовки хоста на вашем веб-сервере. Таким образом, браузер должен отправить действительный заголовок хоста (www.mysite.com или mysite.com) для получения сайта. Это по-прежнему предоставляет веб-серверу доступ к IP-запросам, потому что порт все еще открыт, но он не должен отвечать контентом.
Если вы находитесь на сервере Linux, вы можете использовать iptables:
iptables -I INPUT -d YourIP -p tcp --dport 80 -m string --to 700 --algo bm --string 'Host: YourIP' -j DROP
И ваш веб-сервер не ответит.