Я разработал веб-сайт, используя Angular 6 во внешнем интерфейсе. По умолчанию Angular не оптимизирован для SEO, поэтому для этого я реализовал его в виде Angular-Universal или Angular SSR (рендеринг на стороне сервера). Я обновил код и сравнил исходные коды страниц ранее и теперь, я могу видеть свое приложение внутри тегов <app-root>
и </app-root>
, прежде чем появится только «загрузка ...».
Я использую MetaService
и TitleService
из @angular/platform-browser
, чтобы обновить нужные теги <meta>
для Facebook и Twitter и тег <title>
соответственно.
Проблема в том, что когда я запускаю сервер узлов в моей локальной системе, view-source показывает мне обработанные теги meta
, но когда я запускаю тот же код на сервере узлов на виртуальной машине AWS, я не получаю визуализированный meta
тегов, но доступен другой код приложения.
UPDATE:
Функция, которая добавляет 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
служба импортируется и внедряется в конструктор.