2012-04-07 5 views
2

この問題がしばらくありました!とにかく、私はMaxmindsのGeoIP PHPモジュールをダウンロードして自分のサーバーにアップロードした後、私は私の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(); 
} 
?> 

をコードのこの部分を入れて、私は自分のサーバーにページをアップロードしており、Google Chromeで私は取得しています。 ... このウェブページはリダイレクトループのFirefoxと同じ

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 DEWS

UPDATE

OKは、.htaccessのルートを下ることにしました!私は....このように見えるように

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スクリプトを使用して1週間以上作業してきたので、今何をすべきか分かりません。誰も助けてくれることを願っています。なぜなら、私が尋ねる理由は、多くの国のコードが手で入れられるようになっているからです。もう一度、ありがとう!

-Phillip

答えて

0

さて、あなたのif文のマッチのどちらも、あなたが/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

を、私はそれがあなたのために正しいことかもしれないと思う、のRewriteCond文のなぜ大スタックすぎ...

+0

あなたの方法を試みたが、今は500の内部サーバーエラーを取得しています!私のオリジナルの質問を更新してください! –

0

理由を.htaccessファイル内で動作していなかったのは、それらが論理的にANDされていたことです。

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... 

あなたは、各条件の終わりに「ローカルOR」角括弧内には、暗黙のANDを予防することを必要があります。

関連する問題