.htaccess для SEO-ботов, сканирующих одностраничные приложения без хэш-банга
ИспользуяpushState
активную страницу, обычно вы перенаправляете 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]
Проблема в том, что hashbang быстро исчезает благодаря широко адаптированнымpushState
служба поддержки. Это'также очень уродливый и неt очень интуитивно понятен для пользователя.
Так что, если бы мы использовали режим 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 такжеесть статья что предлагает использоватьвыбрать в Метод для этого единственного крайнего случая, используя в
страницы. Опять же, это для одного крайнего случая. Здесь мы говорим об обработке каждой страницы каквыбрать в senario.I»
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]
Какие'лучший способ справиться с этим?