У меня есть многоязычный веб-сайт, который использует симпатичные URL, так называемые благоприятные для поисковой системы URL.
Теперь существует несколько мест для определения языка в URL:
www.example.com/en/articles/random
www.example.com/nl/articles/random
en.example.com/articles/random
nl.example.com/articles/random
www.example.com/articles/random?lang=en
www.example.com/articles/random?lang=nl
Там кто-либо - предпочтенный способ показать это или является там другим лучшим способом, которым я не включал?
Я нашел хороший ресурс от Google о выборе, который вы можете сделать. Там есть раздел с плюсами и минусами каждого метода, который вы можете использовать.
Я уже некоторое время борюсь с мультиязычными веб-сайтами.
В статье определенно есть некоторые моменты, которые не упомянуты в приведенных ответах. Поэтому я счел необходимым опубликовать этот ответ. Надеюсь, это кому-то поможет.
Если вы беспокоитесь о красивых урлах для поисковых систем, сначала обратите внимание, что большинство основных поисковых систем способны определить язык при разборе, так что, если наличие определенного языка не является действительно важным аспектом, вам не нужно беспокоиться о дружественности к поисковым системам.
Я не знаю, есть ли в этом случае какая-нибудь «лучшая практика», поскольку это, вероятно, сводится к личному мнению.
Что касается меня, я бы предпочел третий вариант, поскольку это действительно та же страница, которая загружается, вы просто изменяете контент с помощью параметра GET. Использование отдельного URL-адреса (а не параметра) означало бы для меня, что это совершенно отдельная страница / ресурс, чего в данном случае не было бы. Вы также, вероятно, получите поисковые системы, индексирующие страницу несколько раз на разных языках и т. Д. (Хотя, возможно, это то, что вы хотите).
Я думаю, это зависит от вашего окружения. Вы генерируете одни и те же страницы на нескольких языках, используя веб-фреймворк с базой данных, или у вас статические страницы?
Во многих распространенных веб-фреймворках (rails или symfony) вы можете установить правила маршрутизации для #1, которые будут автоматически заполнять параметр языком, который контроллер будет использовать для генерации соответствующего содержимого. Три, конечно, тоже работает, но, на мой взгляд, немного отвлекает.
2 особенно подходит, если вы вызываете перенаправление на уровне веб-сервера, и имеет преимущество, позволяя ссылки из / без потенциальной "потери" языковых настроек пользователя. Другими словами, ссылка на /home приведет вас на правильную языковую версию "домашней" страницы.
Последний вариант - хранить язык как предпочтение пользователя в cookie и не вводить его в url вообще.
Поисковые системы считают субдомены независимыми веб-сайтами. Я не уверен, как это повлияет на SEO.
Я далек от того, чтобы знать "правильный" ответ (я предполагаю, что его нет), но поскольку вы просите комментариев, вот мой:
URL (или URI) - это нечто, что описывает или идентифицирует ресурс. Если я правильно помню, URL не должен зависеть от способа отображения ресурса (HTML, XML, JSON и т.д.).
Можно также рассмотреть язык как способ указать как должен отображаться ресурс.
Поэтому, на мой взгляд, последний вариант, а именно указание языка в качестве параметра, был бы более подходящим.
Я определенно выбрал бы
www.mydomain.com/articles/random?lang=en
www.mydomain.com/articles/random?lang=nl
, потому что более естественно сказать: «эта ссылка (полная ссылка) на английском или голландском».
В противном случае (domain / lang / restof url) создается впечатление, что у вас есть какая-то структура, которая содержит разные вещи для en и nl. То же самое относится к lang.domain / ...
Я скажу вам, что НЕ является лучшей практикой - использование параметров (3-й). Заставлять пользователей вводить сложный URL - значит навлекать на себя неприятности.
Ваши страницы могут внутренне использовать GET-параметры для поиска lang, но используйте модуль перезаписи URL, доступный на вашем веб-сервере, чтобы сделать его простым, как, например, в первом случае - www.mydomain.com/en/articles/random
Даже второй вариант подходит, только большинство пользователей набирают доменное имя и нажимают Ctrl + Enter.
https://addons.mozilla.org/en-US/firefox/
http://msdn.microsoft.com/en-us/default.aspx
Mozilla, Microsoft и Apple находятся в трех разных уголках мира разработки программного обеспечения, в плане... ну... всего. Иногда я склонен думать, что эти три больших парня делают что-то только для того, чтобы не соглашаться друг с другом. Но если они следуют общей практике, это должно иметь смысл...
Я хотел бы добавить один, который мы выбрали для www.openimages.eu:
4)
www.mydomain.com/articles/random.en
www.mydomain.com/articles/random.nl
, но лучше всего, конечно, слушать предпочтительный язык, на котором браузер сообщает в своем запросе:
Accept-Language nl,en;q=0.7,en-us;q=0.3
и по умолчанию показывать ваши страницы на этом языке, если он доступен. Вы можете предоставить пользователям переключатель для использования '.en' или '.nl'-вещей.
Если вы ищете "дружественные поисковой системе" и "красивые" URL-адреса, вам следует избегать немаскированных параметров GET. Они не так хороши для глаз, как поддомен или подкаталог, и не совсем оптимизированы для SEO.
Имея это в виду, я бы выбрал поддомен. Вы получаете простой обычный «переключатель» для изменения отображаемого языка, и он не находится в середине вашего URL-адреса. Очень легко заметить и изменить.
Первый вариант имеет больше смысла. Потому что если кто-то хочет перейти непосредственно на вашу страницу, и он/она может просто набрать blabla.com/en и достичь того, что он/она хочет...