Назад | Перейти на главную страницу

Сделайте перенаправление IP-адреса на настоящее имя с помощью Apache

Я хочу, чтобы когда люди обращались к моему веб-серверу с 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]