我不知道这在 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/ 获取内容。目前有什么方法可以实现这一点吗?
答案1
您可以使用 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>
答案2
无法更改文档根目录,但您可以根据客户端 IP 重写 URL,类似于...(未经测试)...
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 地址数量非常大。