【问题标题】:Google and multi-language website with same URL具有相同 URL 的 Google 和多语言网站
【发布时间】:2013-03-17 22:41:35
【问题描述】:

我正在使用 geoplugin php 类构建一个支持多语言的网站来检测国家代码。这是我的地理定位代码:

//GEOLOCATE
$geoplugin = new geoPlugin(); 
$geoplugin->locate();
define('REAL_COUNTRY', strtoupper($geoplugin->countryCode));

//AVAILABLE COUNTRIES
function available_countries(){
    $countries_array = array();
    $sql = mysql_query("SELECT id FROM countries WHERE enabled = '1';") or die(mysql_error());
    while($row = mysql_fetch_array($sql)) array_push($countries_array, $row['id']);
    return $countries_array;
}

//RETURN COUNTRY CODE
function detect_language(){
    if(isset($_COOKIE['country'])) return $_COOKIE['country'];
    else if(isset($_SESSION['country'])) return $_SESSION['country'];
    else if(in_array(REAL_COUNTRY, available_countries())) return REAL_COUNTRY;
    else return 'EN';
}

根据返回的国家代码,我的 php 脚本然后从数据库中加载内容。

我希望链接格式如下:

英文网站:sitename.com/contact
德国网站:sitename.com/kontakt
斯洛文尼亚网站:sitename.com/kontakt


请注意,德语和斯洛文尼亚语站点的 URL 是相同的,但它仍然会根据 IP 和 geoplugin 返回的代码加载不同的内容。

该网站运行良好,但我担心的是 Google 和其他搜索引擎。 Google 是否会找到除“EN”以外的其他语言的页面,还是使用更经典的方法并向 URL 添加语言 ID 会更好,如下所示:

英文网站:sitename.com/zh/contact
德国网站:sitename.com/de/kontakt
斯洛文尼亚网站:sitename.com/si/kontakt


谢谢!

【问题讨论】:

    标签: php url indexing multilingual


    【解决方案1】:

    我建议您使用描述性 URL。它使任何搜索引擎基于 URL 100% 不同,从而消除了混淆。

    请确保您还将每个页面上的 META 信息更改为正确的语言。这将有助于从一开始就对语言进行分类。

    通过使用这种方法,您还可以确保无论网站的哪个部分被链接并因此在搜索引擎中得到改进,整个域都会获得更好的排名,从而使您的 SEO 工作保持一致。

    可读的 URL 在各个方面都是这十年的最佳创意。

    【讨论】:

      【解决方案2】:

      隐藏谷歌工具栏的CSS

      .goog-te-banner-frame.skiptranslate {
          display: none !important;
      }
      #google_translate_element{
          display: none !important;   
      }
      

      翻译回调函数

      function googleTranslateElementInit() {
          new google.translate.TranslateElement({
              pageLanguage: 'de', 
              //includedLanguages: 'ar,en,gu,hi,pa,ur',       
              autoDisplay: false,
      
          }, 'google_translate_element');
      }
      
      <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
      

      页面加载触发事件

      function fireEvent(element, event) {
        if (document.createEventObject) {
          var evt = document.createEventObject();
          return element.fireEvent('on' + event, evt)
        } else {
          var evt = document.createEvent("HTMLEvents");
          evt.initEvent(event, true, true);
          return !element.dispatchEvent(evt);
        }
      }
      
      var jObj = $('.goog-te-combo');
      var db = jObj.get(0);
      jObj.val('gu');
      fireEvent(db, 'change');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 2017-08-11
        • 2016-03-06
        • 2016-10-03
        • 2011-08-06
        相关资源
        最近更新 更多