我们有一个用AngularJS编码的网站。由于网站的大部分内容是通过javascript生成的,因此搜索引擎无法为网页编制索引。因此,我们设置了Prerender.io来索引我们的网站。它做得很好,我可以从他们的网站上查看rawhtml。
如果我在浏览器中输入以下内容,Prerender.io将正确显示rawhtml:
http://service.prerender.io/http://www.swiftlearning.com/?_escaped_fragment_=/login
问题是我无法让IIS 6将机器人请求发送给Prerender。
当我使用此网址时: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>
我希望我没有把这个问题与我的解释混为一谈。任何帮助将不胜感激。
谢谢,
达纳
答案 0 :(得分:0)
嗯,事实证明IIS 6不能处理重定向。使用IIS 7可以实现重定向。因此,它归结为升级我们的服务器,由于各种原因这是非常容易引起的,或者是一些黑客攻击。
感谢您查看此问题。
直到明天我才能选择这个作为答案。
达纳