gpt4 book ai didi

javascript - 阻止 Google 索引 AngularJS 路由

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:30:34 27 4
gpt4 key购买 nike

通常,如果我不想让 Google 抓取某个页面,我会将该页面添加到我的 robots.txt 文件中,如下所示:

User-agent: *
Disallow: /my-page

为了防止 Google 将该页面编入索引,我会将该页面从我的 sitemap.xml 中删除将以下元标记添加到 <head>页面的:

<meta name="robots" content="noindex">

现在,如果我使用 AngularJS 处理单个页面应用程序的所有路由,如何停止 Google 索引和/或抓取路由? Angular 为每条路线在 ng-view 中带来内容,因此信息在 <head> 中在每条路线上保持不变。我不认为我可以在这种情况下添加元标记。

最佳答案

如果你的根模块放在<html>标记 ( <html ng-app="myApp"> ),您可以修改 <head> 中的所有属性.这允许您动态设置机器人 <meta>对于每一页。你可以用 $routeChangeSuccess 做到这一点根模块中的事件。如果您使用的是 ui-router,您可以在路线上设置一个“数据”属性,您可以在每次状态更改时读取该属性。您也可以使用 $rootScope 从其他模块更新这个值,但这不是一个好的做法。最好的方法是从子 Controller /指令向根模块广播更改。

我有一个改变页面的例子<title>动态地,但它有点复杂,因为这个应用程序是手动引导的。然而,假设在 <html> 上有一个 ng-app=""和 ng-controller=""指令。标签。

这是状态更改事件:https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/_app-main/_app-main.controller.js#L14-L24

这里是广播的监听器:https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/_app-main/_app-main.controller.js#L38-L40

以下是广播的触发方式:https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/profile-feature/customer-page/customer-page.controller.js#L12

这是 <title>装订:https://github.com/danmindru/angular-boilerplate-study/blob/master/src/index.html#L4

但是,Google 并不擅长读取这些属性,因此您必须使用预呈现服务来确保 googlebot 能够解析 <meta name="robots" content="noindex">而不是像 <meta name="robots" content="{{index}}"> 这样的东西.

关于javascript - 阻止 Google 索引 AngularJS 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com