私はしようとしています: 訪問者の IP に基づいてリダイレクトを行います。私の Web サイトは wpengine でホストされており、IP に基づいてユーザーの国を取得できる GEO IP サービスがあります。スウェーデン、デンマーク、またはノルウェーからウェブサイトにアクセスしている場合は、リダイレクトされずにページにとどまります... http://www.centuri.seしかし、これらの国から来ていない場合は、英語版にリダイレクトされますwpml で翻訳されたサイトの ... 翻訳されたページhttp://www.centuri.se/en/に移動します。
このコードを使用してリダイレクトを行います。
<?php
// THE COOKIE NAME
$cookie_name = "country";
// ACCEPTED COUNTRIES THAT SKIPS THE REDIRECT
$countries = array('se','dk','no');
// CHECK IF YOUR COOKIE IS SET
if (!isset($_COOKIE[$cookie_name])) {
// GET USER INFO
$userInfo = do_shortcode('[geoip-country]');
// GET COUNTRY INTO LOWERCASE
$country = strtolower($userInfo);
//SET COOKIE BASED ON COUNTRY NAME FROM USER
setcookie('country', $country, time() + (3600 * 24 * 30), '/');
if(!in_array($country, $countries)) {
//Set a cookie to tell that this user has been redirected
setcookie('redirect', 1, time() + (3600 * 24 * 30), '/');
wp_redirect( home_url() . '/en/' ); exit;
}
}
?>
wpengine のステージング サーバーでは、このソリューションは問題なく動作します。http://centuri.staging.wpengine.com でテストできますが、このスクリプトをライブ サーバーに適用すると、http://www.centuri にリダイレクトされます。 se/en/enで、404 メッセージが表示されます。違いを確認するために、リダイレクトの一部を home_url() から site_url() に切り替えようとしましたが、ライブ サーバーでこれを行うと、リダイレクトが発生します。ループ。私のウェブサイトがクラッシュするので、私は今のところ私のライブサイトのためにこれをコメントアウトしました.
これはWPMLで行われた設定でしょうか? ここからどこへ行くべきか本当にわかりません...ライブサーバーではなくステージングサーバーで完璧に動作し、コードとデータベースが同一であるため、非常に混乱しています。