Настройте Apache Vhost, чтобы не лечить "?"в качестве маркера запроса - PullRequest
0 голосов
/ 26 ноября 2010

Я сделал снимок всех страниц в своем приложении ajax, и согласно спецификации Google [http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=174992] я сохранил эти файлы в шаблоне, описанном как "www.example.com/ajax.html?_escaped_fragment_ = mystate ". В том же каталоге находится файл с именем, адаптированный к этому примеру, ajax.html, который является статической HTML-страницей. Серверная сторона вообще не задействована.

При переходе на www.example.com/ajax.html?_escaped_fragment_=mystate, который содержит HTML-контент, отличный от содержимого, найденного в ajax.html, ajax.html отображается в браузере с использованием curl, wget и google. "Получить как googlebot" инструмент.

Из моего понимания проблема в том? обрабатывается http-сервером [apache 2] так же, как # обрабатывается браузером, то есть считается параметром запроса char.

Итак, как я могу указать этому VHOST, чтобы он вел себя правильно, и вместо этого отправить файл www.example.com/ajax.html?_escaped_fragment_=mystate?

Спасибо

1 Ответ

1 голос
/ 26 ноября 2010

Вы можете сохранить все свои фрагменты в / fragments / (mystate) и использовать модуль apache mod_rewrite:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^ajax.html$ /fragments/%1

Это выглядит так: Если есть строка запроса "_escaped_fragment_", примите значение, поместитев переменной% 1 и продолжайте.Затем, если URL-адрес также «ajax.html», переписать ajax.html в /fragments/%1.

.
...