Должен ли AJAX использовать hashtag/#!/Или нет?

Я создал веб-страницу с URL-формой http://www.example.com/module/content Это очень динамичная веб-страница, на самом деле это веб-приложение.

Чтобы сделать его максимально гибким, я хочу использовать AJAX вместо обычных запросов на страницу. Это также позволяет мне использовать JavaScript для добавления слоя для обеспечения автономных возможностей.

Мой вопрос только: как мне сделать URL? Должны ли они быть http://www.example.com/module/content или http://www.example.com/#!/module/content?

Ниже приведены только мои мысли в обоих направлениях. Вам не нужно читать, если у вас уже есть четкая мысль об этом.

Я хочу использовать первую версию, потому что хочу поддержать новый стандарт HTML5. Он прост в использовании, и URL-адреса выглядят красиво. Но что еще более важно, это позволяет мне это сделать:

Если пользователь запрашивает страницу, она вернет полную HTML-страницу.

Если пользователь затем нажимает ссылку, он будет вставлять только содержимое в контейнер div через AJAX.

Это позволит пользователям без JavaScript использовать мой веб-сайт, так как он НЕВОЗМОЖНО использовать JavaScript, он просто будет использовать простой старый "click the link-request-get full html page back" -approach.

Хотя это здорово, проблема, конечно же, в Internet Explorer. Только последняя версия IE поддерживает API истории, и чтобы эта работа работала в более старых версиях, нужно использовать хэштег. (50% моих пользователей будут использовать IE, поэтому мне нужно его поддерживать...) Итак, я должен использовать /#!/, Чтобы заставить его работать.

Если вы используете обе эти URL-версии, возникает проблема: если пользователь IE размещает эту ссылку на веб-сайте, Google отправит сервер _unescaped_string (или тому подобное). И он будет индексировать страницу с помощью IE- версии с хэштегом. И некоторые страницы будут без хэштега.

И как мы помним, не-хэштег лучше для многих разных вещей. Итак, можно ли обойти эту проблему с поисковой системой? Можно ли сообщить GoogleBot, что если он достигнет хэштег-версии веб-сайта, он должен быть перенаправлен на не-хэш-версию веб-страницы? Таким образом, можно получить все преимущества URL без хэштега и по-прежнему поддерживать IE6-IE9.

Как вы думаете, лучший подход? Может быть, вы попробовали это на практике самостоятельно? Спасибо за ваш ответ!

Ответ 1

Если вы хотите, чтобы Google индексировал ваш контент Ajax, вы должны использовать значение #! key =, подобное этому. Вот что Google предпочитает для навигации Ajax.

Если вы действительно предпочитаете довольно HTML5-url без #! то, да, вы можете поддерживать оба без проблем с индексацией! Просто добавьте:

<link rel="canonical" href="preferredurl" />

в раздел <head> каждой страницы (для начальной загрузки), поэтому, чтобы помочь Google узнать, какую версию URL-адреса вы бы предпочли им индексировать. Подробнее о канонических URL здесь.

Ответ 2

В этом случае решение очень просто. Вы используете первую схему URL, и вы не используете улучшения AJAX для более старых браузеров IE.

Если ваши драгоценные пользователи не хотят обновляться, это их проблема, но они не могут жаловаться на отсутствие этих эффектов и динамики kewl.

Вы можете бросить "Ваш браузер сильно устарел!" уведомление для устаревших браузеров.

Ответ 3

Я не использовал бы /#!/ в URL-адресе. Сначала убедитесь, что страница работает нормально, с полными запросами страницы (это должно быть легко). После этого вы можете проверить объект window.history, и если он присутствует, добавьте AJAX. Вызовы AJAX могут идти на один и тот же URL-адрес, и основное отличие заключается в обработке на стороне сервера. Проверка проста, если установлен HTTP_X_REQUESTED_WITH, запрос является запросом AJAX, и если он не установлен, вы имеете дело со стандартным запросом.

Вам не нужно беспокоиться о дублированном контенте, потому что GoogleBot не устанавливает заголовок запроса HTTP_X_REQUESTED_WITH.