【问题标题】:Configure Web.Config (ASP.NET) to redirect web crawlers to another page配置 Web.Config (ASP.NET) 以将网络爬虫重定向到另一个页面
【发布时间】:2017-12-08 21:30:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: angularjs apache .htaccess iis web-config


【解决方案1】:

我能够解决我的问题。

要简单地将 URL 重写到同一域中的另一个页面,必须在 IIS 中启用 URL 重写。为了重写到另一个域,您不仅需要 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>

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2018-03-08
    • 2013-10-03
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多