Используя страницу с включенной поддержкой pushState
, обычно вы перенаправляете боты SEO, используя соглашение escaped_fragment
. Вы можете узнать больше об этом here..htaccess для SEO-роботов, сканирующих одностраничные приложения без hashbangs
Соглашение предполагает, что вы используете префикс 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
. Это также очень уродливо и не очень интуитивно понятно для пользователя.
Итак, что, если мы использовали режим 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
Можно ли переписать правила для ботов в вашу кеш-версию, используя это новое соглашение? Related but only accounts for index edge case. Google также has an article, который предлагает использовать метод opt-in для этого случая с одним краем, используя <meta name="fragment" content="!">
на странице <head>
. Опять же, это для одного края. Здесь мы говорим об обработке каждой страницы как opt-in senario.
http://example.com/?escaped_fragment=
http://example.com/category?escaped_fragment=
http://example.com/category/subcategory?escaped_fragment=
Я имею в виду, что escaped_fragment
все еще может быть использован в качестве идентификатора для SEO ботов, и что я мог бы извлечь все Inbetween в домене и этот идентификатор, чтобы добавить к моему ведром места, как:
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]
Каков наилучший способ справиться с этим?
Привет @ dan-kanze .. У меня такая же проблема. У вас есть какое-то решение или что-то, что может мне помочь. Застрял с этим – Catmandu
Я был там, PushState, похоже, требует вы должны иметь эти папки на своем диске. Таким образом, те, кто поддерживает pushState, смогут увидеть эту страницу, а также ботов. – pedroassis