Apache:基于客户端IP的DocumentRoot

我不知道这是否可能在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 /获取内容。 目前有什么办法可以做到这一点?

你可以用一个RewriteRule前面的RewriteCond来检查remote_addr(请记住使用%作为variables,而不是$:

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

不能更改文档根目录,但可以根据客户端IP重写URL,例如…(未testing)…

 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地址数量非常大,使用外部重写程序可能会更简单。