【问题标题】:apache http rewrite/redirect based on ip基于 ip 的 apache http 重写/重定向
【发布时间】:2011-08-26 21:01:39
【问题描述】:

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

【问题讨论】:

    标签: apache httpd.conf


    【解决方案1】:

    这是一个重写配置的示例,可以做你想做的事 - 把它放在你服务器上 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 防止已经重写为包含_DEBUG=1 的URL 被再次重写
    • 实际RewriteRule有两个版本;第一个版本(已注释掉)实际上执行了重定向。如果您确实希望 HTTP 客户端向服务器提交第二个请求,包括 _DEBUG=1 参数,请使用此选项。不利的一面是,如果您将 GET 和 POST 数据结合起来,此方法将不起作用。
    • RewriteRule 的第二个版本是我建议您使用的...它不执行重定向。相反,它只是在处理请求之前在 Apache 内部将 _DEBUG=1 参数附加到 HTTP 请求。

    【讨论】:

    • 我将如何处理多个 ips(和 ips 范围?)
    • @user678070 1.2.3.4 可以是模式(例如 1.2.3.*)。
    • 这对我不起作用,网址没有被重写,对你有用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多