我已经创建了一个简单的应用程序,它的服务器根据用户代理呈现一些基本的SPA内容。
例如,如果在Facebook上共享了一个AngularJS网站链接,我有一个Apache重写规则来将该链接重定向到渲染应用程序。然后,呈现应用程序检查作为查询参数传递的URL,并返回指定的呈现内容。
一切都按预期运行,但渲染结果有问题。Facebook帖子中显示的规范链接是渲染应用程序的链接。下面是正在发生的事情:
共享链接:www.example.com/
- Shared -link
Facebook的帖子结果:
显示的不是共享链接(www.example.com/ the - shared - link ),而是渲染应用程序(rendering.app.com)。但如果我点击Facebook的帖子,它会打开正确的网站页面。
Facebook调试器结果:
所有需要的meta标签都被添加到渲染的结果页面:
<!-- 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]
我做错了什么?如何将规范的url更改为原始的共享链接?
发布于 2018-05-28 19:51:58
解决了我的问题!
https域具有强制rendering.app.com的重写规则。这会导致一个301 HTTP重定向(就像Facebook调试器显示的那样)。使用https://rendeting.app.com解决了我的问题。解决301 HTTP重定向的另一种方法是删除目标域中的https重写规则。
https://stackoverflow.com/questions/50412886
复制相似问题