URLRewriteFile и символ "#" в строке URL - PullRequest
0 голосов
/ 16 марта 2012

Я использую средства Google, чтобы сделать мое приложение GWT доступным для поиска (https://developers.google.com/webmasters/ajax-crawling/docs/getting-started),, которое работает нормально. К сожалению, похоже, что Bing не следует тому же шаблону / правилу.

Я думал, что добавлю URL-фильтр на основе user-agent для сопоставления всех URL-адресов в форме

http://www.example.com/#!blah=something

до

http://www.example.com/?_escaped_fragment_=blah=something

только для BingBot, чтобы мой CrawlerServet возвращал то же, что и запросы GoogleBot. У меня есть правило URLRewrite, например:

<rule>
  <condition name="user-agent">Firefox/8.0</condition>
  <from use-query-string="true">^(.*)#!(.*)$</from>
  <to type="redirect">?_escaped_fragment_=$2</to>
</rule>

(я использую пользовательский агент Firefox для тестирования)

Это никогда не совпадает. Если я изменю правило на ^ (. )! (. ) $ и попытаюсь найти совпадение на

http://www.example.com/!blah=something

это будет работать, но с использованием того же правила

http://www.example.com/#!blah=something

не будет работать, потому что кажется, что строка URL, которую использует фильтр, обрезается до "#".

Может кто-нибудь сказать мне, если это возможно, чтобы сделать эту работу.

1 Ответ

0 голосов
/ 16 марта 2012

Браузер не отправляет хэш на сервер, как вы обнаружили.Просматривая данный запрос, вы увидите, что он отправляет только URL-адрес перед символом #.

GET / HTTP/1.1
Host: example.com
...

По ссылке, которую вы упомянули:

Фрагменты хэширования никогда не выполняются (по спецификации) отправляется на сервер как часть HTTP-запроса.Другими словами, сканеру нужен какой-то способ, чтобы ваш сервер знал, что ему нужно содержимое для URL www.example.com/ajax.html#!key=value (в отличие от простого www.example.com/ajax.html).).

Из описаний в тексте задача сервера состоит в том, чтобы преобразовать URL-адрес «уродливый» в симпатичный (с хэшем) и отправить обратно снимок того, что может сделать эта страница.похоже, если загружен с хэшем на клиенте.На этой странице могут быть другие ссылки, использующие хэши для загрузки других документов - сканер автоматически переведет их обратно в некрасивые URL-адреса и запросит дополнительные данные с сервера.

Короче говоря, этоне нужно вносить никаких изменений, робот Google сделает это автоматически, если вы выбрали использование хеш-фрагментов.Что касается других ботов, то, очевидно, Bing теперь также поддерживает эту идею, но, похоже, это выходит за рамки вашего вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...