Я хочу, чтобы когда люди обращались к моему веб-серверу с IP-адресом, например http://10.0.0.1
, будут перенаправлены на доменное имя, например http://example.com
. Я использую веб-сервер Apache и пробовал:
<VirtualHost 10.0.0.1:80>
Redirect / http://example.com
</VirtualHost>
который сгенерировал бесконечный цикл перенаправления, потому что он имеет более высокий приоритет, чем
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
это виртуальный хост, который я хочу обслуживать.
Я также пробовал
<VirtualHost 10.0.0.1:80>
ServerName 10.0.0.1
Redirect / http://example.com
</VirtualHost>
думая, что, может быть, это только совпадет http://10.0.0.1
но нет http://example.com
. Но это также создает бесконечный цикл. Есть идеи, как этого добиться?
Причина, по которой виртуальный IP-хост не является основным и единственным виртуальным хостом, заключается в том, что я хочу, чтобы другие IP-адреса на сервере также могли обслуживать example.com
.
HD ответил, что дает хорошее правило перезаписи, но перед этим вы должны поставить условие. Убедитесь, что на 10.10.10.1 работает только один виртуальный хост, и ваше определение должно выглядеть следующим образом:
<VirtualHost 10.0.0.1:80>
ServerName servername.com
.....
RewriteCond %{SERVER_NAME} 10.10.10.1
RewriteRule /(.*) http://servername.com/$1 [R=301,L]
</VirtualHost>
Таким образом, вам понадобится только один виртуальный хост для этого IP-адреса вместо того, что вы пытались сделать выше. ПРИМЕЧАНИЕ. Если у вас будет более одного виртуального хоста на этом сервере, вам необходимо разместить остальные на разных IP-адресах.
Я пробую ту же конфигурацию, и она отлично работает. Вы уверены, что нет другого определения, которое конфликтует с вашими виртуальными хостами? Какая ошибка в журналах apache?
Это правило также работает:
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC]
В .htaccess
добавить следующее:
RewriteCond %{HTTP_HOST} ^123\.123\.123\.123
RewriteRule (.*) http://www.example.com/$1 [R=301,L]