首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >facebook开放图和AngularJs

facebook开放图和AngularJs
EN

Stack Overflow用户
提问于 2015-01-06 07:11:13
回答 1查看 3.6K关注 0票数 3

我正在尝试在我正在开发的AngularJs应用程序中添加开放图形功能。我希望我的应用程序的用户与他们的Facebook好友共享一个URL。我理解共享工作,您需要添加打开图形元数据标签到页面(网址,描述,图像,标题等)。我需要用户共享的URL是动态的,具有以下结构:

http://example.com/game/invitation/1118

其中1118是游戏的Id要共享。下面这篇文章描述了如何在一个有角度的应用程序中实现社会共享:

http://www.michaelbromley.co.uk/blog/171/enable-rich-social-sharing-in-your-angularjs-app

然而,本文指出Facebook爬虫不能呈现动态内容。因此,当Facebook爬虫访问http://example.com/game/invitation/1118时,我需要将请求重定向到我的服务器,以生成正确的打开图元标记。我正在使用IIS (本文解释了如何通过Apache实现这一点)。这是我重写的规则:

代码语言:javascript
复制
    <rule name="Imported Rule 1" stopProcessing="true">
        <match url="invitation/([_0-9a-z-]+)" ignoreCase="false" />
        <conditions>
            <add input="{HTTP_USER_AGENT}" pattern="facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet" />
        </conditions>
        <action type="Redirect" url="http://meta.example.com/social/meta/{R:1}" appendQueryString="false" />
    </rule>

因此,每当url包含游戏的邀请/id,而用户代理是Facebook (或Twitter、Pinterest、Google等)时,将其重定向到"http://meta.example.com/social/meta/[id]“。效果很好。我已经设置了一个单独的网站(http://meta.example.com)来呈现开放的图形元标记,供爬虫索引。

问题是我需要使用http://example.com/game/invitation/1118作为og:url元标记值(这是用户朋友单击查看邀请的链接,我的大多数用户朋友不会是Facebook爬虫)。如果我包括

代码语言:javascript
复制
<meta property="og:url" content="http://example.com/game/invitation/1118" />

http://meta.example.com/social/meta/1118生成的页面中,我得到了Facebook的中的循环引用错误。Facebook的爬虫是从http://meta.example.com/social/meta/1118生成的元标记中挑选标题、描述等。但是,它似乎从og:url标记中选择了http://example.com/game/invitation/1118并再次运行它。据我所知,这会引起一个循环引用。

那么,当用户代理是Facebook时,如何配置IIS将http://example.com/game/invitation/1118请求重定向到http://meta.example.com/social/meta/1118,以便生成适当的打开图元标记并重用启动此过程(http://example.com/game/invitation/1118)的原始URL?

上面的文章(http://www.michaelbromley.co.uk/blog/171/enable-rich-social-sharing-in-your-angularjs-app)提到了如何为Apache做到这一点。我不知道如何将其转换为IIS:

P标志使Apache使用mod_proxy和mod_proxy_http执行重映射,而不是常规重定向。例如,如果使用301重定向,Facebook将链接到“Static-page.php”URL,而不是原始URL。

谢谢你的帮助。我在用IIS 8。

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 23:29:02

而不是重定向行动:

代码语言:javascript
复制
<action type="Redirect" url="http://meta.example.com/social/meta/{R:1}" appendQueryString="false" />

您应该使用重写操作:

代码语言:javascript
复制
<action type="Rewrite" url="/social/meta/{R:1}" appendQueryString="false" /> 

请注意,您应该在同一域上创建一个相对路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27793799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档