2012-04-07 3 views
2

잠시 동안이 문제가 발생했습니다. 어쨌든 나는 그때 내 index.php를 페이지 내 서버에 내가 무엇입니까 구글 크롬에서 페이지를 업로드 한MaxMind GEO_IP 리디렉션

<?php 
require_once("geoip/geoip.inc"); 
$gi = geoip_open("geoip/GeoIP.dat",GEOIP_STANDARD); 
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']); 
geoip_close($gi); 

$my_countriesrow = array('AD','AE','AF'......and so on); 
$my_countrieseuro = array('AN','AT','BA','BE','BG','BY'.......and so on); 
/* $my_country = array('GB','UK'); */ 

if (!in_array(strtolower($country), $my_countriesrow)){ 
    header('Location: https://www.website.com/row/index.php'); 
    exit(); 
} 
elseif (!in_array(strtolower($country), $my_countrieseuro)){ 
    header('Location: https://www.website.com/euro/index.php'); 
    exit(); 
} 
else { 
    header('Location: https://www.website.com/index.php'); 
    exit(); 
} 
?> 

에이 부분의 코드를 넣어 Maxminds GeoIP가 PHP는 모듈을 다운로드하여 내 서버에 업로드했습니다. ... 이 웹 페이지는 파이어 폭스와 같이

The web page at https://www.website.com/index.php has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer. 

같은 리디렉션 루프를 가지고! 누구나 내가 모든 것을 가지고있어 어떤 아이디어가있어 ....

미리 감사드립니다!

-Phillip 이슬

UPDATE

확인 htaccess로 ROUTE 아래로 이동하기로 결정했습니다! 나는 .... 같이 할

GeoIPEnable On 
GeoIPDBFile /geoip/GeoIP.dat 

# Europe 
RewriteEngine on 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AM$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AO$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AQ$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AR$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AW$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AX$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AZ$ 
RewriteRule ^(.*)$ https://www.Website.com/europe$1 [L] 

# Rest Of World 
RewriteEngine on 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AD$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AE$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AF$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AG$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AI$ 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AL$ 
RewriteRule ^(.*)$ https://www.Website.com/row$1 [L] 

을 내 htaccess로 파일을 편집 한 그러나 어떤 이유로 난 여전히 나를 위해 작동하지 않는 모든 그을음 국가에서 퍼팅 후, 500 내부 오류가있다! 정말 다른 PHP 스크립트를 사용하여 일주일 이상이 작업을하고 지금은 어떻게 해야할지 모르겠다. 누구든지 도움을받을 수 있기를 바랍니다. 사전에 감사드립니다. 이유는 묻습니다. 많은 국가 코드가 손에 넣으 려하므로 모든 것을 넣지 않고 작동하지 않을 것입니다! 다시 많은 감사드립니다!

-Phillip

답변

0

음, 귀하의 경우 문장 일치의도, 당신은 /index.php로 리디렉션하는 경우. 수정중인 코드가 index.php 인 경우 /index.php에 대한 요청이 다시 index.php으로 리디렉션됩니다. 당신은 아마도 원할 것입니다 :

$my_countrieseuro = array('AN','AT','BA','BE','BG','BY'.......and so on); 

if (in_array(strtolower($country), $my_countrieseuro)){ 
    // European version 
    header('Location: https://www.website.com/euro/index.php'); 
    exit(); 
} else { 
    // International version 
    header('Location: https://www.website.com/row/index.php'); 
    exit(); 
} 
+0

phihag에게 감사하지만 .htaccess로 시도해보기로 결정했지만 지금은 작동하지 않습니다. 원래의 질문을 업데이트했습니다. 어쨌든 고마워요 –

0

글쎄, 나는 이렇게 할 수 있을지 확신하지 못합니다.

htaccess 파일로 조금 "재생"하지 않는 이유는 무엇입니까?

확인은 여기에 대답의 나 :

how to redirect domain according to country IP address

을 내가 너무 당신을 위해 옳은 것 같아요 ...

+0

길을 시도했지만 지금 500 내부 서버 오류가 발생했습니다! 내 원래의 질문에 대한 업데이 트를 올려! –

0

이유를 이유한다 RewriteCond 문의 큰 스택 .htaccess 파일에서 작동하지 않는다는 것은 논리적으로 함께 논리적으로 연결된다는 것입니다.

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AM$ [OR] 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AO$ [OR] 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AQ$ 
RewriteRule ...some special stuff for any of these hosts... 

암시 적 AND를 방지하려면 각 조건의 끝에 대괄호 안에 '로컬 OR'이 필요합니다.