Сайт, который распознает местоположение пользователя / IP и изменения языка. на основании этого - PullRequest
8 голосов
/ 11 января 2010

заголовок довольно понятный.

Мои веб-сайты состоят из версий на английском и испанском языках. Вы можете перейти на основной сайт, который на испанском языке, нажав http://www.chrishonn.com и переведенную версию, которая на английском языке, на http://en.chrishonn.com.. На указателе каждой страницы есть ссылка внизу), которые позволяют пользователю переходить с одного сайта на другой.

Однако мне было интересно, как крупные сайты, такие как Google, Yahoo !, и сайты других брендов, распознают географическое местоположение / IP пользователя, чтобы - в зависимости от этого - язык сайта был адаптирован ( вы из Китая и вы посещаете www.google.com, вы будете перенаправлены на www.google.cn ).


Я указал на каждой странице моего сайта язык:

<meta http-equiv="content-language" content="en">

Этот пример, конечно, с одного из http://en.chrishonn.com сайтов на английском языке.

Надеюсь, кто-нибудь может мне помочь. Спасибо (если я что-то пропустил, пожалуйста, дайте мне знать).

Ответы [ 6 ]

12 голосов
/ 11 января 2010

Вместо определения местоположения IP-адреса (часто ненадежного из-за NAT и прокси) вы можете проверить язык по умолчанию, установленный в браузере. Для этого есть плагины JQuery, такие как http://keith -wood.name / localisation.html , или используйте код на стороне сервера, чтобы прочитать заголовок HTTP-запроса «HTTP_ACCEPT_LANGUAGE», чтобы определить, хотите ли вы показать сайт ES или EN.

10 голосов
/ 11 января 2010

Что касается Google, ваше местоположение определяется по вашему IP-адресу. Запрос на google.com из-за пределов США возвращает HTTP/1.1 302 Found, который перенаправляет вас на домен вашей страны.

Как также обсуждалось в другом посте , такие перенаправления могут сделать SEO сложным и сложным. Я предлагаю прочесть статью Мэтта Катта (разработчика программного обеспечения Google) о том, как Google обрабатывает редирект 302: Совет SEO: обсуждение 302 перенаправлений .

Различные поисковые системы обрабатывают редирект 302 по-разному. При переадресации 302 вы можете рискнуть, если поисковая система проигнорирует ваш исходный домен.


Если вы хотите определить местоположение ваших пользователей по их IP-адресу, существует множество готовых служб, которые в основном отображают большую часть диапазонов IP-адресов по странам. Вы можете проверить:


Другой популярный метод - анализ HTTP-заголовка Accept-Language, который содержит информацию о языковых предпочтениях пользователя. Основные браузеры позволяют пользователю изменять эти языковые предпочтения. Вы можете прочитать больше об этой технике от:


1 голос
/ 11 января 2010

На этих сайтах часто используются инструменты, которые обычно называются «программным обеспечением для определения местоположения».

Одним из самых популярных пакетов является бесплатная GeoLite Country база данных, предлагаемая MaxMind. Это будет интегрировано в ваше приложение и обеспечит поиск IP-адресов между странами. В Apache у вас будут установлены переменные окружения GEOIP_COUNTRY_CODE и GEOIP_COUNTRY_NAME.

После этого все ваше приложение должно решить, где должен находиться ваш пользователь или какие настройки должны иметь по умолчанию в зависимости от страны, и перенаправить или вывести соответствующим образом.

1 голос
/ 11 января 2010

некоторые веб-сайты используют географическое местоположение на основе IP-адресов, некоторые используют заголовок языка Accept (можно установить в браузере). В любом случае, с точки зрения удобства использования - всегда позволяйте людям менять язык и никогда не отображать разный контент на одном IP-адресе (Google и другим поисковым системам это не нравится, и это будет плохо с точки зрения SEO).

0 голосов
/ 31 марта 2016

Я создал облачный дистрибутив и попал в белый список заголовка CloudFront-Viewer-Country. Но когда я получил доступ к объекту, используя этот дистрибутив, я не увидел его в заголовке запроса.

0 голосов
/ 04 ноября 2015

Вы можете сделать запрос GET на этот URL: https://api.teletext.io/api/v1/geo-ip, и он ответит информацией о некоторых странах в формате JSON. См. https://teletext.io/help/geo-location-service для использования.

Если вы хотите реализовать это самостоятельно: я настроил это с помощью AWS Cloudfront, Cloudfront добавляет заголовок (Cloudfront-Viewer-Country) к вашему запросу, прежде чем перенаправить его на исходный сервер, который вы можете использовать. Обязательно внесите белый список в ваш дистрибутив Cloudfront.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...