apache http 基于 ip 重写/重定向

发布于 2024-11-08 00:13:17 字数 136 浏览 0 评论 0原文

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

I want to redirect an ip to another view of my website, for example, I want the visitor from ip x to see
www.xxx.com?_DEBUG=1
while all other visitors see the normal www.xxx.com,
how would I do this in apache config file, what directives are used?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

于我来说 2024-11-15 00:13:17

下面是一个重写配置的示例,可以执行您想要的操作 - 将其放入服务器上 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 请求。

Here is an example of a rewrite configuration to do what you want - put this inside the virtual host for www.xxx.com on your server:

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]

A couple of notes:

  • Change 1.2.3.4 to whatever IP you need
  • The second RewriteCond prevents URLs already re-written to include _DEBUG=1 from being re-written again
  • There are two versions of the actual RewriteRule; the first version (commented out) actually performs a redirect. Use this if you actually want the HTTP client to submit a second request to the server including the _DEBUG=1 argument. The downside is that if you're combining GET and POST data, this method will not work.
  • The second version of the RewriteRule is what I recommend you use...it doesn't perform a redirect. Instead it just appends the _DEBUG=1 parameter to the HTTP request internally in Apache before the request is handled.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文