Задать вопрос

Настройка .htaccess для успешного просмотра гуглоботом ajax-содержимого

Судя по этим ответам в справке для вебмастеров от гугла, гуглобот может нормально индексировать ajax-контент, если правильно использовать якорные ссылки ('#!'), и настроить перенаправление для адресов, содержащих _escaped_fragment_= в запросе.

В качестве сервера использую Apache с mod_rewrite, для перенаправления в .htaccess записано следующее правило:
RewriteEngine on

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule \?_escaped_fragment_=(.*) snapshots/snap_%1.html [NC,R=301,L]


Проблема в том, что такое правило работает не так, как предполагалось: RewriteRule не отрабатывает, и перенаправления не происходит.

В случае такого правила:
RewriteEngine on

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ mysite.com/snapshots/snap_%1.html [NC,R=301,L]


url превращается в mysite.com/snapshots/snap_ACHORLINK.html?_escaped_fragment_=ACHORLINK для ссылки mysite.com/?_escaped_fragment_=ACHORLINK, что приводит к циклическим перенаправлениям.

Если кто-то объяснит, где закралась ошибка, буду очень благодарен.
  • Вопрос задан
  • 4522 просмотра
Подписаться 18 Оценить Комментировать
Решения вопроса 1
Goder
@Goder Автор вопроса
Спасибо ребятам с stackoverflow, ответ найден. :)
Если кто-то столкнется с такой с подобной ситуацией: использовать нужно второе правило, добавив знак '?' после .html в строке подстановки. Результат будет такой:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ mysite.com/snapshots/snap_%1.html [NC,R=301,L]


Кроме того, советуют убрать редирект. Окончательный результат:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ mysite.com/snapshots/snap_%1.html [NC,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы