Вопрос: Apache: DocumentRoot на основе Client-IP


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

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


5
2017-12-01 11:05


Источник




Ответы:


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

<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>

6
2017-12-01 12:10



Благодаря! Я обнаружил, что это правильный метод (по крайней мере, для меня). - Seth Jeremi Malaki


Невозможно изменить корень документа, но вы можете переписать 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-адресов очень велико.


3
2017-12-01 12:06