根据 IP 地址重定向访问者
Redirect visitors based on IP address
我制作了一个要用 IP 地址块保护的页面。
每个访问 example.com
的人都应该被重定向到 example.com/block.php
,除非我知道那里的 IP 地址。我希望能够在某处的列表中添加很多 IP 地址。在我将某人的 IP 地址添加到列表后,当他们再次访问 example.com
时,他们现在应该被重定向到 example.com/index.php
.
这可能吗?我看过很多看起来都一样的问题,但没有一个能真正回答我的问题。
这个怎么样?
<?php
$allowed = array(
'123.45.67.890',
'456.45.67.890',
'789.45.67.890',
);
if(!in_array($_SERVER['REMOTE_ADDR'], $allowed)) {
header("Location: /block.php");
exit();
}
// continue with code ...
?>
希望有用!
有几种方法可以做到这一点,因为你的问题中有 htaccess
标签,我假设你正在寻找 htaccess 文件解决方案。
如果您没有使用 apache 2.4(或更高版本),您可以使用 mod_authz 来处理所有阻塞。像这样:
# this makes it so blocked IPs get shown the block.php page
ErrorDocument 403 /block.php
Order Allow,Deny
Deny from all
Allow from 1.2.3.4
Allow from 1.2.3.5
Allow from 5.6.7.8
etc...
在这里,您阻止所有内容并保留 "Allow from" 行的列表。如果你想允许整个子网,你可以缩短它们,例如
Allow from 1.2.3
将允许以 1.2.3 开头的 IP。
您也可以为此使用 mod_rewrite:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.5$
RewriteCond %{REMOTE_ADDR} !^5\.6\.7\.8$
RewriteRule ^ /block.php [L,F]
在这里,你有更多的灵活性,因为你可以使用正则表达式来匹配 IP。所以你可以做这样的事情:
RewriteCond %{REMOTE_ADDR} !^1\.2\.[3-6]\.
所以这允许所有以以下 IP 开头的 IP:1.2.3、1.2.4、1.2.5 和 1.2.6。
您也可以将这些指令放入 server/vhost 配置文件中,它会比 htaccess 文件更快地工作。
我制作了一个要用 IP 地址块保护的页面。
每个访问 example.com
的人都应该被重定向到 example.com/block.php
,除非我知道那里的 IP 地址。我希望能够在某处的列表中添加很多 IP 地址。在我将某人的 IP 地址添加到列表后,当他们再次访问 example.com
时,他们现在应该被重定向到 example.com/index.php
.
这可能吗?我看过很多看起来都一样的问题,但没有一个能真正回答我的问题。
这个怎么样?
<?php
$allowed = array(
'123.45.67.890',
'456.45.67.890',
'789.45.67.890',
);
if(!in_array($_SERVER['REMOTE_ADDR'], $allowed)) {
header("Location: /block.php");
exit();
}
// continue with code ...
?>
希望有用!
有几种方法可以做到这一点,因为你的问题中有 htaccess
标签,我假设你正在寻找 htaccess 文件解决方案。
如果您没有使用 apache 2.4(或更高版本),您可以使用 mod_authz 来处理所有阻塞。像这样:
# this makes it so blocked IPs get shown the block.php page
ErrorDocument 403 /block.php
Order Allow,Deny
Deny from all
Allow from 1.2.3.4
Allow from 1.2.3.5
Allow from 5.6.7.8
etc...
在这里,您阻止所有内容并保留 "Allow from" 行的列表。如果你想允许整个子网,你可以缩短它们,例如
Allow from 1.2.3
将允许以 1.2.3 开头的 IP。
您也可以为此使用 mod_rewrite:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.5$
RewriteCond %{REMOTE_ADDR} !^5\.6\.7\.8$
RewriteRule ^ /block.php [L,F]
在这里,你有更多的灵活性,因为你可以使用正则表达式来匹配 IP。所以你可以做这样的事情:
RewriteCond %{REMOTE_ADDR} !^1\.2\.[3-6]\.
所以这允许所有以以下 IP 开头的 IP:1.2.3、1.2.4、1.2.5 和 1.2.6。
您也可以将这些指令放入 server/vhost 配置文件中,它会比 htaccess 文件更快地工作。