AngularJS SEO с использованием режима HTML5: хотел бы ясности в том, как это работает за кадром

Существует множество ресурсов для реализации SEO-дружественных версий приложений AngularJS, конечно. Несмотря на то, что я читал их много раз, я по-прежнему немного неясен в отношении некоторых вещей, особенно в отношении различия между моделями моделей hashbang и HTML5:

  • Для приложений hashbang (#! или "HTML4" ) в location поставщике указан следующий параметр:

    $location.hashPrefix('!');
    

    Этот параметр необходим для режима HTML5? Почему или почему нет?

  • Для приложений режима HTML5 на странице index.html включен следующий тег meta:

    <meta name="fragment" content="!">
    

    Является ли этот метатег для приложений hashbang? Почему или почему нет?

  • Используя режим HTML5, мои URL-адреса выглядят примерно так:

    http://sample.com/landing/home
    

    Даже с тегом meta из # 2, указанным в моем index.html, я все еще не могу перейти к своим URL-адресам, поскольку искатель будет, например:

    http://sample.com/#!/landing/home
    

    Это нормально? Должен ли я ожидать перехода к стилю hashbang моего приложения, если это приложение режима HTML5, после добавления параметров поставщика location и/или тега meta?


Более того, я думаю, что мой фактический вопрос: какой конкретно, необходимый для обхода режима HTML5, и что специально требуется для обхода стиля в стиле хешбанг? Как они перекрываются? Кроме того, как конфигурация режима HTML5 действительно работает, за кадром, если какой-либо маршрут в стиле hashbang не создается/не используется?

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

AngularJS SEO-дружественная конфигурация обычно имеет смысл, когда дело доходит до классических приложений в стиле hashbang, но для режима HTML5 я немного смущен. Понравилась бы какая-то ясность.

Ответы

Ответ 1

Ответы

  • Hashbang не требуется для HTML4. Но если вы хотите реализовать SEO, то хорошо, что вы его используете, так как поисковые роботы будут видеть эти ссылки и запрашивать другой URL-адрес:

    оригинал

    http://somesite.com/#!/crazy/101
    

    бот:

    http://somesite.com/?_escaped_fragment_=crazy/101
    
  • Метатег включен, поэтому поисковый робот будет автоматически добавлять _escaped_fragment_ к запросам. Поскольку он не может знать, какая часть фактически является частью SPA, значение будет пустым.

    оригинал с тегом meta

    http://somesite/crazy/101
    

    бот

    http://somesite/crazy/101?_escaped_fragment_=
    
  • См. № 2

Как режим HTML5 работает за кулисами?

Он работает с использованием API истории, реализованного в HTML5, который позволяет изменять URL-адрес браузера и манипуляции с историей. В основном это позволяет разработчикам изменять URL-адрес браузера без браузера, чтобы действительно сделать запрос.

Дополнительное описание режима HTML5

Предположим, что ваш SPA работает в корне домена http://somesite.com. Таким образом, всякий раз, когда URL-адрес в браузере изменяется, это означает, что он был обработан на клиенте. Это означает, что на каком-либо URL-адресе субконтента нет фактического содержимого на сервере.

Вот почему бот добавляет _escaped_fragment_ в конец, поэтому вы можете статически использовать статический контент вместо 404 или 301 для root (поскольку контент не существует на сервере). Этот статический контент ничего не возвращает, а возвращает содержимое. Нет обработки скриптов SPA. Чистый контент.