【问题标题】:mod_Rewrite: Filter specific pages by IP and redirect themmod_Rewrite:按 IP 过滤特定页面并重定向它们
【发布时间】:2010-11-26 09:00:01
【问题描述】:

我正在研究一种通过 IP 过滤特定页面并将它们重定向到不同页面的方法。

下面的代码不能正常工作。

RewriteCond %{REMOTE_ADDR} ^/192.168.10.*
RewriteCond %{REQUEST_URI} ^/support
RewriteRule ^/.* http://www.yahoo.com/gone [R,NE]

一旦链接 http://example.com/support 被访问并且它们位于 192.168.10.* 块上,它必须转到 yahoo.com 示例页面。

但是,就像我说的。它什么也没做。任何想法为什么它不能正常工作?

【问题讨论】:

  • RewriteCond %{REMOTE_ADDR} ^192.168.10.*
    试试这个

标签: mod-rewrite filtering ip


【解决方案1】:

正如 yoda 在评论中所说,不要在 IP 地址前面加上/。此外,模式中的. 应该是\.,因为这是与perl 兼容的正则表达式。您还可以在请求 uri 匹配中添加 [NC],不区分大小写(区分大小写)。最后,您可以将第二个条件与RewriteRule 合并。一起来:

RewriteCond %{REMOTE_ADDR} ^192\.168\.10\..*
RewriteRule ^/support http://www.yahoo.com/gone [R,NE,NC]

【讨论】:

  • 谢谢!如果我想要一个特定的 IP,可以这样做吗? RewriteCond %{REMOTE_ADDR} ^192\.168\.10\.148* 我要保留星号 (*) 吗?
  • 末尾没有星号 - 这也将匹配 192.168.10.14(星号表示前面的 '8' 的零个或多个匹配项)。最好是 ^192\.168\.10\.148$ ($ 表示锚定到行尾)。
  • 对于一个固定的IP地址,你根本不需要正则表达式,只需要=192.168.10.148
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多