2013-11-21 99 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