配置Web.Config(ASP.NET)以将Web爬网程序重定向到另一个页面

时间:2017-12-08 21:30:41

标签: angularjs apache .htaccess iis web-config

我有一个使用在IIS Web服务器上运行的AngularJS的网站。由于所有网站的信息都是通过AJAX请求的,因此社交媒体抓取工具无法解析该数据。因此,为了防止社交媒体显示空表达式,例如:{{helloWorld}},我正在尝试将某些社交媒体抓取工具重定向到我的Web应用程序中的特定部分,该部分可以为社交媒体抓取工具预呈现该页面。 / p>

我使用Apache .htaccess文件成功完成了这项工作:

RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit|Facebot|Twitterbot)
RewriteRule ^(.*)$ http://myapp.com/prerender?url=%{REQUEST_URI} [P]

我想知道的是我如何使用IIS完成同样的事情。基本上我想配置一个Web.Config文件与上面等效的重写规则。 Importante,在上面的脚本中,我使用[P]标志来信息Apache访问prerender页面而不知道重定向已经发生的爬虫。

关于我如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

我能够解决我的问题。

要简单地将URL重写到同一域中的另一个页面,必须在IIS中启用URL Rewrite。为了重写到另一个域,您不仅需要URL重写,还需要在服务器中启用应用程序请求路由(反向代理)。

然后在web.config中使用以下示例规则:

<rewrite>
    <rules>
        <rule name="RewriteTest" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="%{HTTP_USER_AGENT" pattern="(facebookexternalhit/[0-9]|Facebot|Twitterbot/[0-9])" />
            </conditions>
            <action type="Rewrite" url="http://example.com/{R:1}" />
        </rule>
    </rules>
</rewrite>

希望这有帮助。