2

しばらくの間この問題を抱えています!とにかく、Maxminds GEOIP phpモジュールをダウンロードしてサーバーにアップロードし、コードのこのセクションをindex.phpページに配置しました。

<?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();
}
?>

ページをサーバーにアップロードしましたが、GoogleChromeで取得しています...このWebページにはリダイレクトループがあります

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.

Firefoxと同じです!私はすべて出ているので、誰もがアイデアを持っています....

前もって感謝します!

-フィリップデューズ

アップデート

OK .HTACCESSルートを降りることを決めました!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]

しかし、何らかの理由で、500の内部エラーが発生します。すべての国を入力した後でも、それはまだ機能していません。さまざまなphpスクリプトを使用して1週間以上これに取り組んできたので、今何をすべきか本当にわかりません。誰かが助けてくれることを願っています事前に感謝します、私が尋ねる理由は、手で入力する国コードがたくさんあるので、それが機能しないことを見つけるためだけにそれらをすべて入れたくないからです!どうもありがとうございました!

-フィリップ

4

3 に答える 3

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();
}
于 2012-04-07T13:04:17.380 に答える
0

まあ、私はそれをこのようにするかどうかはわかりません。

ファイルを少し「遊んで」みませんhtaccessか?

ここで私の答えを確認してください:

国のIPアドレスに従ってドメインをリダイレクトする方法

それはあなたにとっても正しいことかもしれないと思います...

于 2012-04-07T13:06:29.530 に答える
0

.htaccessファイル内のRewriteCondステートメントの大きなスタックが機能しなかった理由は、それらが論理的に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... 

暗黙のANDを防ぐために、各条件の最後に角かっこで囲まれた「ローカルOR」が必要です。

于 2016-02-19T04:11:32.010 に答える