Есть страницы (динамические), контент которых может отображаться на разных языках, при этом адрес разных языковых версий может как совпадать, так и отличаться. Можно ли как-то определить язык поискового бота, и заставить его проиндексировать все языковые версии сайта, чтобы поисковая выдача была такой:
google.com — Английская версия страницы
google.ru — Русская версия страницы
google.com.ua — Украинская версия страницы
yandex.ru — Русская версия страницы
yandex.ua — Украинская версия страницы
И так далее по аналогии.
Только не нужно ответов на вопрос «как сделать многоязычность на сайте?», интересно, если ли возможность провернуть именно такую реализацию.
Content-language отдается и всегда соответствует языку страницы. Может, есть возможность с помощью <link> указать все языковые версии и их адреса?
У страниц с одним содержанием но на разных языках должен быть один URL. Это разные представления одного объекта.
Но так, как нормально работать с HTTP 1.1 человечество уже 13 лет учится и еще не научилось, придется на сервере реализовать клиентскую логику. Придется сделать отдельные URL и общий url, который будет делать редирект temporary moved 302 на локализованные страницы. И еще заголовок vary не забыть, чтобы прокси и бот понимали, что это локализованная страница.
А на каком языке показывать сайт в выдаче поисковик решает сам. Можете дополнительно подсказать ему заголовком Content-Language. Может быть он его поймет.
Могу посоветовать диссертацию Роя Филдинга www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
HTTP работает с ресурсами. Ресурсы идентифицируются по URL и могут иметь несколько представлений. Представления выбираются исходя из заголовков, переданных клиенту. Пользователь видит самое удобное для него представление.
Если у вас один ресурс и он представлен на нескольких языках, то и URL у него один. Но вы тогда и не даете ссылок «ресурс на английком языке», это не нужно: пользователь увидит его на самом подходящем языке и, если надо, выберет другой.
Вот это самое «выберет другой» в браузере запрятано в глубокую попу и простым смертным не доступно. Приходится ставить ссылки на версии на конкретном языке и рассматривать их как отдельные ресурсы.
Про отправку на конкретные ресурс с помощью 302 я читал в какой-то рекоментации w3c, но сохранить адрес забыл. Идея в том, что в закладках браузер должен оставлять адрес основной страницы, а не локализованной.
Vary говорит промежуточным серверам, а также клиенту, что возврашенная страницы зависит от перечисленных заголовкой, переданных пользователем. Если он придет с другими заголовками, ответ может быть другим, поэтому нельзя извлекать его из кеша. Необходим для нормальной работы кэширования. Я не знаю, анализирует ли его бот, но хотелось бы верить, что да.
В meta дублировать не надо т.к. с этим заголовком работает кеш, а парсить html — не его дело.
На счёт meta — это я уже о поисковых системах.
Нашел информацию, что google реагирует на «Vary: User-Agent» для сайтов, предназначенных для мобильных устройств, на счёт учета языка пока не вижу такой информации.
Вот бы Accept-Language, только наоборот, чтобы показать, на каких ещё языках может быть страница.
Есть такое. Заголовок Link с rel=alternate или rel=self и атрибутом hreflang. Только большой вопрос, кто это поймет, да и семантика у атрибута hreflang странная: он ни на что не влияет.
То ли дело тег link в xhtml/2.0. Там он специально для этого сделан. Но сам стандарт не приняли.
Да, заморочился я с многоязычностью и семантикой. Попробую использовать с надеждой, что если не сегодня — то завтра хоть кто-то начнёт это понимать. Интернет уже пришел к тому, что нужно его структурировать, в том числе по языковому принципу.
Ваш ответ самый информативный, спасибо, пусть пока это будет решением.
Потихоньку начинают понимать. Например opera понимает теги link с type=«application/atom+xml» и показывает значок в адресной строке. Также она понимает rel=next (в том числе на гиперссылках) и умеет переходить на эти страницы если пытаться мотать страницу ниже её конца пробелом. В браузерах для андроида появились легко доступные галочки переключения в полный режим, а значит отпадает надобность в ссылках на полные версии сайтов.
Вообще, было бы удобно, если переключение языков и представлений на всех сатах было одинаковым. Я обычно поиском по странице пользуюсь, чтобы найти эти кнопки.
P.S. А на текущий момент я знаю один сайт, учитывающий Accept-Language — это фейсбук.
На сколько я понимаю, поисковики используют единую базу для всех своих «веб-морд». Поэтому и робот скорее всего один.
Поэтому, наверное, лучше делать однозначную адресацию страниц для каждого из языков. А поисковики (при условии индексации всех вариантов страниц) пусть уж сами разбираются, что отдавать пользователю в зависимости от языка запроса.