我不确定这是不是可以做到。
但我需要一种方法,以重定向访问者的国家IP地址为基础。
在别人提到它之前,
是的,我知道Geoip
,但我的主机没有它,而且我也没有shell访问权限。
所以我在寻找另一种选择。
这就是问题所在
我的网站一般是供个人使用的,我被垃圾邮件发送者和不想要的爬虫加上
人们寻找的文件,我甚至没有have.these来自世界各地的访问者。
所以我需要一种有效的方法来做这件事。
现在,我只是用一种混乱的方式使用正则表达式来重定向其中的一小部分。
就像这样。
#china ips-
#
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^(49\.(4|51|52|64|239)|54\.222) [OR]
RewriteCond %{REMOTE_ADDR} ^(91\.234|134\.196|159\.226|161\.207|166\.111) [OR]
RewriteCond %{REMOTE_ADDR} ^(168\.160|192\.(124|188)|193\.0)
RewriteRule !^folder/country\.html http://www.website.com/folder/country.html [L,NC,R]
虽然这是可行的,但它只将列出的regex ip地址重定向到我选择的页面。
它适用于20+ ip地址,但如果您有超过1000+ ip地址,则需要重定向,
(我确实是这么做的)你的htaccess文件往往会变得非常大,而且杂乱无章。
我宁愿把ip地址放在一个文本文件中,让htaccess在cn.txt
中查找它,
或者china.txt
然后以某种方式将它在该txt文件中找到的任何ip地址重定向到
http://www.website.com/folder/country.html
我知道,如果我的主机有geoip
,这可能会让这件事变得容易得多。
我忘了提一下,我的网站大约85%是html,虽然我有一个论坛画廊和常见问题解答是php,
我通常主要使用html代码。谢谢
发布于 2013-11-21 22:59:24
您需要将以下PHP脚本添加到访问者可以打开的所有PHP脚本中。许多PHP应用程序都有一个引导脚本,您可以在其中放置这些代码。但是,如果不是您的情况,则htaccess是更好的选择。
index.php脚本:
<?php
// Get user's IP address
$remoteAddr = $_SERVER['REMOTE_ADDR'];
// Load a list of regular expressions that redirect the user to 'http://www.website.com/folder/country.html'
$regexes = explode("\n", file_get_contents(dirname(__FILE__) . "/cn.txt"));
foreach ($regexes as $regex) {
if (preg_match('/^' . $regex . '$/', $remoteAddr)) {
header("Location: http://www.website.com/folder/country.html");
exit;
}
}
Cn.txt的内容:
49\.(4|51|52|64|239)|54\.222
91\.234|134\.196|159\.226|161\.207|166\.111
and so on
注意:您也可以通过脚本(以您选择的语言)生成您的htaccess。我的意思是,你可以有一个正则表达式的列表,并在每次修改该列表时从该列表生成htaccess。
发布于 2014-03-14 12:31:11
有一些重定向解决方案不需要任何代码或服务器中的任何数据库。其中之一就是www.redirectbycountry.com
https://stackoverflow.com/questions/20133040
复制