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. Чистый контент.