我在前端使用 Angular 6 开发了一个网站。默认情况下,Angular 对 SEO 不友好,所以为了做到这一点,我以 Angular-Universal 或 Angular SSR(服务器端渲染)的方式实现了它。我更新了代码并比较了之前和现在的页面源,我可以在标签中看到我的应用程序,<app-root>
并且</app-root>
在只有“加载...”之前会出现。
我正在使用MetaService
and TitleService
from@angular/platform-browser
来分别更新<meta>
Facebook 和 Twitter 所需的标签和<title>
标签。
问题是当我在本地系统中运行节点服务器时,视图源向我显示了渲染的meta
标签,但是当我在 AWS VM 上的节点服务器中运行相同的代码时,我没有得到渲染的meta
标签,而是其他应用程序代码可用。
更新:
添加meta
标签的功能
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
并id
从服务调用返回到后端,并且meta
服务已被导入并注入到构造函数中。