У нас есть веб-сайт, закодированный с помощью AngularJS. Поскольку большая часть сайта создается с помощью javascript, поисковые системы не могут индексировать страницы. Итак, мы настроили Prerender.io для индексации нашего сайта. Это нормально, и я могу просматривать rawhtml с их сайта.
Если я введу в браузер следующее, Prerender.io правильно отобразит необработанный HTML:
http://service.prerender.io/http://www.swiftlearning.com/?_escaped_fragment_=/логин
Проблема в том, что я не могу заставить IIS 6 отправлять запросы бота в Prerender.
Когда я беру этот URL: http://www.swiftlearning.com/#!/login и замените #! с ?_escaped_fragment_=, что приводит к http://www.swiftlearning.com/?_escaped_fragment_=/login а>
IIS возвращает исходную страницу веб-сайта и отображает следующий URL-адрес: http://www.swiftlearning.com/?_escaped_fragment_=/login#!/home
Я настроил Wireshark для захвата трафика. Он показывает, что приходит запрос, а затем приходит ответ с веб-сайта, а не с prerender.io.
Я создал файл web.config (с тем, что я уже нашел на StackOverflow) со следующей конфигурацией.
<?xml version="1.0"?>
<configuration>
<system.web>
<httpProtocol>
<customHeaders>
<add name="X-Prerender-Token" value="dTaPu5H97XTS618Y8edm" />
</customHeaders>
</httpProtocol>
<httpModules>
<add name="Prerender" type="Prerender.io.PrerenderModule, Prerender.io, Version=1.0.0.2, Culture=neutral, PublicKeyToken=null"/>
</httpModules>
<rewrite>
<rules>
<!--# Only proxy the request to Prerender if it's a request for HTML-->
<rule name="Prerender" stopProcessing="true">
<match url="^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(.*)" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="baiduspider|facebookexternalhit|twitterbot" />
<add input="{QUERY_STRING}" pattern="_escaped_fragment_" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="http://service.prerender.io/http://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
<rule name="Redirect To Index" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.web>
</configuration>
Я надеюсь, что не запутал вопрос своим объяснением. Любая помощь будет оценена.
Спасибо,
Дана