基于ip的apache http rewrite / redirect

问题描述 投票:3回答:1

我想将ip重定向到我网站的另一个视图,例如,我希望来自ip x的访问者看到 www.xxx.com?_DEBUG=1 当所有其他访问者看到正常的www.xxx.com时,我如何在apache配置文件中执行此操作,使用了哪些指令?

apache httpd.conf
1个回答
3
投票

下面是一个重写配置的示例,可以执行您想要的操作 - 将其放在服务器上的www.xxx.com虚拟主机中:

RewriteCond %{REMOTE_ADDR} 1.2.3.4
RewriteCond %{QUERY_STRING} !_DEBUG=1
#RewriteRule ^/(.*)$ /$1?_DEBUG=1 [QSA,R,L]
RewriteRule ^/(.*)$ /$1?_DEBUG=1 [QSA,L]

几个笔记:

  • 1.2.3.4更改为您需要的任何IP
  • 第二个RewriteCond阻止已经重写的URL包括_DEBUG=1再次重写
  • 有两个版本的实际RewriteRule;第一个版本(注释掉)实际上执行重定向。如果您确实希望HTTP客户端向服务器提交第二个请求(包括_DEBUG=1参数),请使用此选项。缺点是,如果您要组合GET和POST数据,此方法将无法正常工作。
  • RewriteRule的第二个版本是我建议您使用的......它不执行重定向。相反,它只是在处理请求之前在Apache内部将_DEBUG=1参数附加到HTTP请求。
© www.soinside.com 2019 - 2024. All rights reserved.