2013-11-21 104 views
0

不确定是否可以这样做。
但我需要一种方式来根据他们的国家IP地址重定向访问者。
基于国家/地区的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] 

虽然这个工作,它只是重定向上市正则表达式的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代码。 谢谢

+1

为什么不简单地在PHP中重写它?您可以简单地打开一个带有IP地址的文件,通过它并在PHP中进行相应的重定向。 –

+0

@MartyIX,感谢您的回复,我在PHP中完全没有任何经验,我不是从头开始编写代码的粉丝。我需要一些可以编辑的东西,这是我真正可以学习的唯一方法。 – TheFuz

+0

看看这个SO回答:http://stackoverflow.com/questions/1038648/run-php-code-from-htaccess。虽然它涉及PHP,但您可以从中获得灵感,然后用您满意的另一种语言替换PHP。 – Stephan

回答

0

您需要将以下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。

+0

感谢您的回复和努力,但东西告诉我ID有问题,因为我的网站大多数是在HTML(我有一些像PHP论坛和画廊,但他们安装在自己的文件夹)在我的根文件夹中的所有基于HTML。并只链接到PHP脚本,如论坛等。所以我需要在htaccess中调用脚本 – TheFuz

+0

。然后htaccess是一种方式去:) –

0

有重定向解决方案,不需要任何代码或任何数据库在您的服务器。其中之一是www.redirectbycountry.com