我创建了一个简单的应用程序,服务器根据用户代理呈现一些基本的SPA内容。
例如,如果在Facebook上共享AngularJS网站链接,我有一个Apache重写规则将该链接重定向到呈现应用程序。然后,呈现应用程序检查作为查询参数传递的URL,并返回指定的呈现内容。
一切都按预期工作,但渲染结果存在问题。 Facebook帖子中显示的规范链接是呈现应用程序的链接。 以下是发生的事情:
共享链接:www.example.com/the-shared-link
Facebook的帖子结果:
而不是显示共享链接(www.example.com/the-shared-link),而是显示渲染应用程序(rendering.app.com)。但如果我点击Facebook帖子,它会打开正确的网页。
Facebook调试器结果:
所有需要的元标记都会添加到呈现的结果页面中:
<!-- Schema.org markup for Google+ -->
<meta itemprop="name" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit." />
<meta itemprop="description" content="Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." />
<meta itemprop="image" content="http://www.example.com/some-image.jpg" />
<!-- Twiter Cards -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit." />
<meta name="twitter:title" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit." />
<meta name="twitter:description" content="Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." />
<meta name="twitter:image:src" content="http://www.example.com/some-image.jpg" />
<!--/ Twiter Cards -->
<!-- Open Graph -->
<meta property="og:site_name" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit." />
<meta property="og:type" content="website" />
<meta property="og:title" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit." />
<meta property="og:url" content="http://www.example.com/the-shared-link" />
<meta property="og:description" content="Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo." />
<meta property="og:image" content="http://www.example.com/some-image.jpg" />
<meta property="og:image:width" content="500" />
<meta property="og:image:height" content="375" />
<!--/ Open Graph -->
Apache htaccess重写规则:
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Facebot|Twitterbot/[0-9]|Pinterest|Pinterestbot|LinkedInBot/[0-9])
RewriteRule ^(.*)$ http://rendering.app.com/?url=%{REQUEST_URI} [P,L]
我做错了什么?如何将规范网址更改为原始共享链接?
答案 0 :(得分:0)
解决了我的问题!
rendering.app.com域有一个重写规则来强制https。这会导致301 HTTP重定向(就像Facebook调试器所示)。 使用 https ://rendeting.app.com解决了我的问题。解决301 HTTP重定向的另一种方法是删除目标域中的https重写规则。