重定向Apache 2.4中除我的IP之外的路由路径



我试图将除我自己的IP地址外的所有访问重定向到特定的路径/url(而不是文件或目录,只是一个路由路径(,如";example.com/my path";转到主页。我在.htaccess文件中尝试了几个代码,但都不起作用。

我用了这个代码:

RewriteCond %{REMOTE_ADDR} != 1.2.3.4 (MY IP) 
RewriteRule /my-path https://example.com

我哪里错了?

RewriteCond %{REMOTE_ADDR} != 1.2.3.4 (MY IP) 
RewriteRule /my-path https://example.com

这里有一些错误:

  • !=之后和测试字符串之前不应有空格。!=CondPattern(第二个参数(的一部分。=是前缀运算符(使其成为字符串匹配,而不是正则表达式(,!是否定表达式的附加运算符。所以!=不是一个操作符,而是两个粘在一起的操作符。

  • RewriteRule模式(即/my-path(是与请求的URL路径匹配的正则表达式。但是,请注意,在目录上下文(例如.htaccess(中,匹配的URL路径不会以斜杠开头。

  • 这将隐含地触发302(临时(重定向。但是,您应该始终是明确的,并包括R标志。

  • 对于外部重定向,您几乎应该始终包含L(last(标志,以防止进一步处理。

上面应该这样写:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=1.2.3.4
RewriteRule ^my-path$ https://example.com/ [R=302,L]

这将匹配所请求的URL/my-path,并且如果请求来自非1.2.3.4的IP地址,则向https://example.com/发出临时重定向。

最新更新