Использование Angular для динамического добавления и удаления

#angular #google-search-console

#angular #google-search-console

Вопрос:

Консоль поиска Google не индексирует мое приложение Angular SPA. Команда Angular динамически вставляет мета-тег «noindex» в заголовок и после завершения рендеринга страницы компонент Angular удаляет мета-тег «noindex». Насколько я понимаю, эта стратегия предположительно позволяет избежать индексации SPA до того, как Angular отобразит веб-сайт, и избежать индексации 404 страниц. Я следовал тому же подходу, что и Angular.io СПА, но я вижу разные результаты с помощью консоли поиска Google.

My SPA — это ванильный проект Angular CLI с несколькими лениво загруженными маршрутизируемыми модулями, а компоненты внутри лениво загруженных маршрутизируемых модулей отвечают за удаление мета-тега «noindex».

Очевидно, что Google индексирует Angular.io просто отлично https://www.google.com/search ?q=angular router -site: angular.io

Вот мой index.html

 <!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Site Title</title>
  <meta name="description" content="My SEO meta description" />
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <script>
    // Dynamically, pre-emptively, add `noindex`, which will be removed when the doc is ready and valid
    tag = document.createElement('meta'); tag.name = 'robots'; tag.content = 'noindex';
    document.head.appendChild(tag);
  </script>

</head>
<body>
  <app-root></app-root>
</body>
</html>
  

И Angular.io index.html . https://github.com/angular/angular/blob/57f7996b6d2bee5a63902637fdec5b60b9a857cd/aio/src/index.html#L35

Это мой app.route.ts

 export const routes: Routes = [
  {
    path: '',
    pathMatch: 'full',
    loadChildren: './routed/home/home.module#HomeModule',
    data: {
      page: 'home',
    }
  },

  // <editor-fold desc="Catch-All Routes">

  {
    path: '**',
    loadChildren: './routed/not-found/not-found.module#NotFoundModule'
  }

  // </editor-fold>
];

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot(routes)
  ],
  exports: [RouterModule]
})
export class AppRouterModule { }
  

И это отрывок из моего модуля с отложенной загрузкой и маршрутизацией home , который удаляет мета-тег «noindex».

 @Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
  constructor(private metaService: Meta) {
    this.metaService.removeTag('name="robots"');
  }

  ngOnInit() {
  }

}
  

И это Angular.io компонент, отвечающий за удаление мета-тега «noindex» https://github.com/angular/angular/blob/57f7996b6d2bee5a63902637fdec5b60b9a857cd/aio/src/app/app.component.html#L53

https://github.com/angular/angular/blob/57f7996b6d2bee5a63902637fdec5b60b9a857cd/aio/src/app/layout/doc-viewer/doc-viewer.component.ts#L161

При просмотре исходного кода страницы в chrome developer tools <head > тег не содержит мета-тега «noindex». Однако при входе в консоль поиска Google и выполнении живого теста я получаю эту ошибку: «Исключено тегом ‘noindex’. ‘noindex’ обнаружен в мета-теге ‘robots'»

Комментарии:

1. Вы когда-нибудь находили ответ на это?