我在前端使用 Angular 6 开发了一个网站。默认情况下,Angular 对 SEO 不友好,因此为了做到这一点,我以 Angular-Universal 或 Angular SSR(服务器端渲染)的方式实现它。我更新了代码并比较了之前和现在的页面源,我可以在标签内看到我的应用程序<app-root>
and </app-root>
,然后才会出现“正在加载...”。
我正在使用MetaService
and TitleService
from @angular/platform-browser
更新所需的<meta>
Facebook 和 Twitter 的标签以及<title>
分别标记。
问题是当我在本地系统中运行节点服务器时,视图源向我显示渲染的meta
标签,但是当我在 AWS VM 上的节点服务器中运行相同的代码时,我没有得到渲染的结果meta
标签,但其他应用程序代码可用。
UPDATE:添加的函数meta
tags
updateMetaTags(egElement: Elements[]) {
this.url = 'https://example.com/eg/' + this.id;
const title = egElement[1].innerHTML;
this.tweetText = 'Check the latest blog on \"' + title + '\"';
this.meta.addTags([
{ property: 'og:url', content: this.url },
{ property: 'og:type', content: 'website' },
{ property: 'og:title', content: title },
{ property: 'og:description', content: 'Author: ' + egElement[2].innerHTML },
{ property: 'og:image', content: this.egElement[3].img }
]);
}
我在 ngOnInit() 中调用这个函数。它在我的本地计算机上正确渲染,但不在服务器上渲染。
egElement
and id
从服务调用返回到后端并且meta
服务已被导入并注入到构造函数中。