Используя страницу pushState
enabled, как правило, вы перенаправляете SEO-боты, используя соглашение escaped_fragment
. Вы можете узнать больше об этом здесь.
В соглашении предполагается, что вы будете использовать префикс hashbang (#!
) перед всем вашим URI на одностраничном приложении. SEO-боты будут избегать этих фрагментов, заменив хэш-банд своим собственным узнаваемым соглашением escaped_fragment
при создании запроса страницы.
//Your page
http://example.com/#!home
//Requested by bots as
http://example.com/?_escaped_fragment=home
Это позволяет администратору сайта обнаруживать боты и перенаправлять их на кэшированную предварительно записанную страницу.
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ https://s3.amazonaws.com/mybucket/$1 [P,QSA,L]
Проблема заключается в том, что хеш-бэнг быстро прекращается с помощью широко адаптированной поддержки pushState
. Это также очень уродливо и не очень интуитивно понятно для пользователя.
Итак, что, если мы использовали режим HTML5, где pushState направляет все пользовательское приложение?
//Your index is using pushState
http://example.com/
//Your category is using pushState (not a folder)
http://example.com/category
//Your category/subcategory is using pushState
http://example.com/category/subcategory
Можно ли переписать правила для ботов в вашу кеш-версию, используя это новое соглашение? Связанные, но только учетные записи для края индекса. Google также имеет статью, который предлагает использовать метод opt-in для этого случая с одним краем, используя <meta name="fragment" content="!">
в <head>
страницы. Опять же, это для одного края. Здесь мы говорим о том, как обрабатывать каждую страницу в качестве сменного входа.
http://example.com/?escaped_fragment=
http://example.com/category?escaped_fragment=
http://example.com/category/subcategory?escaped_fragment=
Я думаю, что escaped_fragment
все еще можно использовать как идентификатор для ботов SEO, и что я мог бы извлечь все, что находится между доменом и этим идентификатором, чтобы добавить в мое местоположение в ковше, например:
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=$
# (high level example I have no idea how to do this)
# extract "category/subcategory" == $2
# from http://example.com/category/subcategory?escaped_fragment=
RewriteRule ^(.*)$ https://s3.amazonaws.com/mybucket/$2 [P,QSA,L]
Какой лучший способ справиться с этим?