2016-10-12 120 views
-1

我必須爲我的國家的IP列表文件,因爲像這樣(txt文件):IP檢查通過列表

45.123.116.0/22 
5.2.80.0/21 
5.11.128.0/17 
5.23.120.0/21 
5.24.0.0/14 
etc 

我有兩個問題。

1-我可以轉發用戶,如果他通過.htaccess文件在該列表中? (如果他是,使用這個地址..如果不是這個地址)

2-如何通過PHP檢查'用戶是否在我的國家'?我的意思是,我怎麼能說出那樣的話..

if (strstr('list.txt',$_SERVER['REMOTE_ADDR'])) 
+0

你不能用'.htaccess'來做這個。你需要使用php來檢查它,然後重定向到新地址。 – Mohammad

回答

0

* 1)的.htaccess文件

訪客阻止由Apache Web服務器提供的設施使我們能夠拒絕對特定訪問者,或允許訪問特定的訪問者。這是阻止不受歡迎的來訪者,或者只允許對網站的某些部分網站的所有者獲得非常有用,如管理*

ErrorDocument 403 /specific_page.html 
area.* 
order allow,deny 
deny from 255.0.0.0 
deny from 123.45.6. 
allow from all 

當使用「秩序允許,拒絕」指令的要求必須匹配「允許」或「拒絕」,否則請求將被拒絕。

文檔1)http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order

DOC 2)http://www.htaccess-guide.com/deny-visitors-by-ip-address/

2)概念(不能說這個原樣工程....)的證明

$current_ip = $_SERVER['REMOTE_ADDR']; 

$valid_ip = false; 

// Convert IPs to Regex 
foreach($cfg['ipallowed'] as $index=>$ip); 
{ 
    $ip = str_replace('.', '\\.', $ip); 
    $ip = str_replace('*', '[0-9]|^1?\\d\\d$|2[0-4]\\d|25[0-5]'); 
    if (preg_match($ip, $current_ip) 
    { 
     $valid_up = true; 
     break; 
    } 
} 

if ($valid_ip) 
0

1;你可以通過IP重定向到一個頁面:

# Redirect a user to /specific_page.html based on their IP address. 
RewriteCond %{REMOTE_ADDR} ^10\.0\.0\.2$ [OR] 
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.2$ 
RewriteCond %{REQUEST_URI} !specific_page\.html$ 
RewriteCond %{REQUEST_URI} !\.(js|png|gif|jpg|css)$ 
RewriteRule^/specific_page.html [R=302,L] 

2;見this question/answer其中建議使用http://www.hostip.info/use.html

+0

它適用於靜態IP,並且不能在文件中使用IP列表。 – Mohammad

+0

對不起,沒有看到。如果文件中有一個列表,你必須在你的global/header/bootstrap文件中使用PHP來檢查和重定向。如果你有一個列表,爲什麼不把這個列表放在htaccess中呢? – Egg

+0

你能告訴我如何從文件讀取ip列表並插入到.htaccess中? – Mohammad