Apache:基于客户端 IP 的 DocumentRoot

Set*_*aki 6 virtualhost documentroot apache-2.2

我不知道这是否可以在 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/ 获取内容。目前有没有办法实现这一目标?

ada*_*ptr 7

您可以使用 RewriteRule 来执行此操作,该 RewriteRule 前面是检查 remote_addr 的 RewriteCond(记住使用 % 来表示变量,而不是 $:

<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>
Run Code Online (Sandbox Code Playgroud)