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

Apache: DocumentRoot на основе клиентского IP

Я еще не знаю, возможно ли это на apache, я провел огромное количество исследований, прежде чем приехать сюда. но:

У меня VirtualHost работает на **: 80 *, имя сервера - на somedomain.tld. Я хочу добиться, чтобы если клиент 10.2.1.4 обращается к somedomain.tld, клиенту будет предоставлен контент из DocumentRoot / var / www / pages-1 /. Затем, если 10.3.0. * Обращается к тому же somedomain.tld, клиент получит контент из DocumentRoot / var / www / pages-2 /. Есть ли какой-нибудь способ добиться этого в настоящее время?

Вы можете сделать это с помощью RewriteRule, которому предшествует RewriteCond, который проверяет remote_addr (помните, что для переменных используется%, а не $:

<VirtualHost *:80>
  Servername somedomain.tld

  RewriteEngine On
  RewriteCond %{REMOTE_ADDR} 10.2.1.4
  RewriteRule ^(.*)$ /var/www/pages-1/$1

  RewriteCond %{REMOTE_ADDR} 10.3.0.
  RewriteRule ^(.*)$ /var/www/pages-2/$1

</VirtualHost>

Невозможно изменить корень документа, но вы можете переписать URL-адрес на основе IP-адреса клиента, что-то вроде ... (не проверено) ...

RewriteCond %{REMOTE_HOST} ^10\.3\.0\.
RewriteRule ^/(.*) /pages-2/$1 [P,L]

RewriteCond %{REMOTE_HOST} ^10\.2\.1\.4$
RewriteRule ^/(.*) /pages-1/$1 [P,L]

Хотя было бы проще использовать внешняя программа перезаписи если количество IP-адресов очень велико.