Apache .htaccess 301重定向仅针对特定IP地址

Apache .htaccess 301重定向仅针对特定IP地址,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,请帮帮我,我已经尽力了,但就是不起作用 我试图实现的只是将我们公司网络中的所有用户(都具有相同的外部ip地址,比如说192.168.0.1)重定向到htp://start.example.com/page_2 当他们访问htp://start.example.com/page_1. 所有其他ip地址都可以访问htp://start.example.com/page_1. 我试过以下两条规则: 1: 在这种情况下,重定向仅在禁用ip检查时有效 2: 在这种情况下,重定向仅在禁用路径检查时有效 怎么

请帮帮我,我已经尽力了,但就是不起作用

我试图实现的只是将我们公司网络中的所有用户(都具有相同的外部ip地址,比如说192.168.0.1)重定向到htp://start.example.com/page_2 当他们访问htp://start.example.com/page_1. 所有其他ip地址都可以访问htp://start.example.com/page_1.

我试过以下两条规则:

1:

在这种情况下,重定向仅在禁用ip检查时有效

2:

在这种情况下,重定向仅在禁用路径检查时有效

怎么了

好的,找到了解决方案,不知何故,重定向的位置不起作用,我把它移到了文档的顶部,现在它可以使用以下语法。在这个示例中,我添加了一个额外的IP检查和一个用户代理“Windows”检查


第一个是来自和来自的两个无关指令的混合。
RewriteCond
没有关联的
RewriteRule

第二个无法工作,因为
REQUEST\u URI
始终包含前导斜杠。合适的条件是

RewriteCond %{REQUEST_URI} !^/page_2$
规则将任何内容(
*
)重写到
第2页
,而不仅仅是
第1页
。为了适当地限制这一点,应该

RewriteRule ^page_1$ http://start.example.com/page_2 [R,L,NC]
如果存在其他重定向,例如在末尾添加路径,则条件也应通过删除字符串末尾标记
$

RewriteCond %{REQUEST_URI} !^/page_2
这与任何以
/page_2
开头的内容匹配

您还可以从重定向中排除其他路径,并用竖线分隔

RewriteCond %{REQUEST_URI} !^/(page_2|page_3)


最后,永远不要测试

哦,我知道文本中的链接是htp而不是http,这是为了发布这个问题,有一个内置的检查,以防止用户使用许多链接。在这种情况下没有什么帮助。我想你应该看看另一个stackexchange(),我认为它更关注这类问题。哈·奥拉夫,谢谢你的回答,我尝试了你的解决方案,但现在页面_2没有显示,因为有太多重定向…@nielsvoo这不应该发生,因为
page_2
被此条件排除。可能是其他规则/重定向导致了这种情况。
page_2
是一个真正的静态文件还是其他文件,比如目录?嗨,Olaf,page_2是Drupal 8站点上的路径别名。.htaccess文件中有一些重定向,都是由Drupal self完成的。@nielsvoo请查看更新的答案,但这可能超出了SO所能提供的范围。嗨,Olaf,感谢所有帮助位置是问题之一,我已将其移到顶部,现在它运行良好。请参阅上面的更新。
RewriteRule ^page_1$ http://start.example.com/page_2 [R,L,NC]
RewriteCond %{REQUEST_URI} !^/page_2
RewriteCond %{REQUEST_URI} !^/(page_2|page_3)