2017-05-08 8 views
0

私は地域ベースのサイトを複数保有しており、ユーザーはそのIPアドレスに従ってリダイレクトします。下に示すのは、ユーザーを国に応じてリダイレクトするコードです。しかしこのコードは、Googlebotが米国以外のページにアクセスするのを防止します。 googlebotがすべてのページを訪問し、ユーザーが自分のIPアドレスごとにリダイレクトされるような理想的な構造は何ですか?前もって感謝します。サーバは米国から来ているように見えるクモをブロックするジオターゲティングサイトのサイト構造

if ($country == "IN") 
     { 
    // do nothing 


     } 

    else if ($country == "BD" ") 
     { 
     header('Location:https://www.exmple.com/directory/bangladesh/index.php'); 

     } 

    else if ($country == "PK" ) 
     { 
     header('Location:https://www.exmple.com/directory/pakistan/index.php'); 
    } 
    else if ($country == "LK") 
     { 
     header('Location:https://www.exmple.com/directory/srilanka/index.php'); 
    } 
    else if ($country == "US") 
     { 
     header('Location:https://www.exmple.com/directory/usa/index.php'); 
    } 
    else if ($country == "CA") 
     { 
     header('Location:https://www.exmple.com/directory/canada/index.php'); 
    } 
    else if ($country == "GB") 
     { 
     header('Location:https://www.exmple.com/directory/uk/index.php'); 
    } 
    else if ($country == "NG") 
     { 
     header('Location:https://www.exmple.com/directory/nigeria/index.php'); 
    } 
    else 
     { 
     header('Location:https://www.exmple.com/directory/global/index.php'); 
    } 
+0

おそらく誰かが最初の訪問セッション変数を設定して、あなたは、彼らが見たいと思うが、その変数が設定されている場合は国にリダイレクト:ユーザーのIPアドレスがこの答えをチェックアウト得るために

ホームページに戻ると、リダイレクトは行われません。 Googlebotだけではないからです。カナダのユーザーがイギリスのディレクトリを見たい場合はどうなりますか?彼らはできない? –

+0

あなたが言うような構造を与えてください。 – rns

+0

構造的な変更はなく、IPアドレスに基づく自動リダイレクトはありません。それを行うと、訪問者(またはgooglebot)が見たいデータを推測する現在の戦略ではなく、最初にリダイレクトするだけで、サイト全体をトラバースできるようになります。 –

答えて

0

USA-基づいてユーザーがページへのアクセスをブロックしている場合は、他の国からの訪問者は、インドはそれを見て言うことができ、。だから、次のコードの変更は動作します:あなたが要求は、Googleのクローラから来ているかどうかを確認するためにgethostbyaddrを使用することができます

if ($country == "US") 
     { 
    // do nothing 


     } 

    else if ($country == "BD" ") 
     { 
     header('Location:https://www.exmple.com/directory/bangladesh/index.php'); 

     } 

    else if ($country == "PK" ) 
     { 
     header('Location:https://www.exmple.com/directory/pakistan/index.php'); 
    } 
    else if ($country == "LK") 
     { 
     header('Location:https://www.exmple.com/directory/srilanka/index.php'); 
    } 
    else if ($country == "IN") 
     { 
     header('Location:https://www.exmple.com/directory/india/index.php'); 
    } 
    else if ($country == "CA") 
     { 
     header('Location:https://www.exmple.com/directory/canada/index.php'); 
    } 
    else if ($country == "GB") 
     { 
     header('Location:https://www.exmple.com/directory/uk/index.php'); 
    } 
    else if ($country == "NG") 
     { 
     header('Location:https://www.exmple.com/directory/nigeria/index.php'); 
    } 
    else 
     { 
     header('Location:https://www.exmple.com/directory/global/index.php'); 
    } 
0

、その情報をあなたには、ユーザーをリダイレクトすることを決定することができます。

// Method will return "crawl-66-249-66-1.googlebot.com" 
$host = gethostbyaddr('66.249.66.1'); 

// Check if the host contains a google domain. 
$isGoogle = (strpos($host, 'googlebot.com') !== false); 

が意図したユーザーページ以外の別のページにそのボットをリダイレクトに関するGoogleのポリシーを認識して、私はそれがそれらによってひんしゅくを買うなら、あまりにもわかりません。

Google以外のクローラをさらに検出するには、他のWebクローラのIP範囲を検索します。 https://stackoverflow.com/a/15699240/3421225

+0

これはgoogleです。ビンと他のすべてのクローラーはどうですか?他の国のディレクトリを参照したいユーザー、またはVPN以外の国から訪問したことを示すVPNを使用しているユーザーはどうでしょうか。そして、はい、私はかなり彼らのクローラが通常の訪問者とは全く別のページが表示されているときにGoogleが嫌いだと確信しています... –

+0

@LucasKrupinskiあなたはそれを自分で確認する必要があるでしょう。あなたはそこにいる機能を知っています。難しいことではなく、IP範囲を調べるだけです。私はこれを見つけた:http://ipinfodb.com/robots-ip-address-ranges.php –

関連する問題