在.htaccess的if语句中检查两个ip
Two ip check in the .htaccess's if statement
我尝试在 .htaccess 中向我网站上的一个页面授予对我的两个 IP 的访问权限,但我的 if 语句存在问题,即仅检查第一个 IP 而从不检查第二个 IP。我的代码是:
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch ^/mypage$ example.com [R=302,L]
</If>
我已经用 &&
代替 AND
进行了测试,但它不起作用。这段代码有什么问题?
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch ^/mypage$ example.com [R=302,L]
</If>
这里有多个语法错误:
正如您所指出的,您需要在表达式中使用 &&
,而不是 AND
。没有运算符 AND
.
双引号 "
应将整个表达式括起来。您基本上有两个独立的表达式,这是不受支持的。
RedirectMatch
mod_alias 指令无效。第三个(标志)参数 [R=302,L]
是 mod_rewrite RewriteRule
指令的一部分,此处不允许使用。目标 URL(第二个参数)需要是 root-relative 或绝对 URL.
应该这样写:
<If "%{REMOTE_ADDR} != '123.123.123.123' && %{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch 302 ^/mypage$ https://example.com/
</If>
不过,我会考虑为此使用 mod_rewrite。例如:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !=123.123.123.123
RewriteCond %{REMOTE_ADDR} !=456.456.456.456
RewriteRule ^mypage$ https://example.com/ [R=302,L]
注意:与 RewriteRule
模式 .
匹配的 URL-path 上没有斜杠前缀
如果您打算“阻止”访问,请考虑发送 403 Forbidden,而不是重定向。例如:
:
RewriteRule ^mypage$ - [F]
或者,如果在 <If>
表达式中使用 RedirectMatch
:
RedirectMatch 403 ^/mypage$
我尝试在 .htaccess 中向我网站上的一个页面授予对我的两个 IP 的访问权限,但我的 if 语句存在问题,即仅检查第一个 IP 而从不检查第二个 IP。我的代码是:
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch ^/mypage$ example.com [R=302,L]
</If>
我已经用 &&
代替 AND
进行了测试,但它不起作用。这段代码有什么问题?
<If "%{REMOTE_ADDR} != '123.123.123.123'" AND "%{REMOTE_ADDR} != '456.456.456.456'"> RedirectMatch ^/mypage$ example.com [R=302,L] </If>
这里有多个语法错误:
正如您所指出的,您需要在表达式中使用
&&
,而不是AND
。没有运算符AND
.双引号
"
应将整个表达式括起来。您基本上有两个独立的表达式,这是不受支持的。RedirectMatch
mod_alias 指令无效。第三个(标志)参数[R=302,L]
是 mod_rewriteRewriteRule
指令的一部分,此处不允许使用。目标 URL(第二个参数)需要是 root-relative 或绝对 URL.
应该这样写:
<If "%{REMOTE_ADDR} != '123.123.123.123' && %{REMOTE_ADDR} != '456.456.456.456'">
RedirectMatch 302 ^/mypage$ https://example.com/
</If>
不过,我会考虑为此使用 mod_rewrite。例如:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !=123.123.123.123
RewriteCond %{REMOTE_ADDR} !=456.456.456.456
RewriteRule ^mypage$ https://example.com/ [R=302,L]
注意:与 RewriteRule
模式 .
如果您打算“阻止”访问,请考虑发送 403 Forbidden,而不是重定向。例如:
:
RewriteRule ^mypage$ - [F]
或者,如果在 <If>
表达式中使用 RedirectMatch
:
RedirectMatch 403 ^/mypage$