阻止 Google 索引 AngularJS 路由
Prevent Google indexing an AngularJS route
通常,如果我不想 Google 抓取某个页面,我会像这样将页面添加到我的 robots.txt 文件中:
User-agent: *
Disallow: /my-page
为了防止 Google 将该页面编入索引,我将从我的 sitemap.xml
中删除该页面,将以下元标记添加到该页面的 <head>
中:
<meta name="robots" content="noindex">
现在,如果我使用 AngularJS 来处理单个页面应用程序的所有路由,如何停止 Google 索引 and/or 抓取路由? Angular 为每条路线在 ng-view 中带来内容,因此 <head>
中的信息在每条路线上保持相同。我不认为我可以在这种情况下添加元标记。
如果你的根模块放在<html>
标签上(<html ng-app="myApp">
),你可以修改<head>
中的所有属性。这允许您为每个页面动态设置机器人 <meta>
。您可以使用根模块中的 $routeChangeSuccess 事件来做到这一点。如果您使用 ui-router,您可以在路由上设置一个 'data' 属性,您可以在每次状态更改时读取该路由。您也可以使用 $rootScope 从其他模块更新这个值,但这不是一个好的做法。最好的方法是从子 controllers/directives 向根模块广播更改。
我有一个动态更改页面 <title>
的示例,但它有点复杂,因为此应用程序是手动引导的。但是,假设 <html>
标签上有一个 ng-app="" 和 ng-controller="" 指令。
这是 <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}}">
.
通常,如果我不想 Google 抓取某个页面,我会像这样将页面添加到我的 robots.txt 文件中:
User-agent: *
Disallow: /my-page
为了防止 Google 将该页面编入索引,我将从我的 sitemap.xml
中删除该页面,将以下元标记添加到该页面的 <head>
中:
<meta name="robots" content="noindex">
现在,如果我使用 AngularJS 来处理单个页面应用程序的所有路由,如何停止 Google 索引 and/or 抓取路由? Angular 为每条路线在 ng-view 中带来内容,因此 <head>
中的信息在每条路线上保持相同。我不认为我可以在这种情况下添加元标记。
如果你的根模块放在<html>
标签上(<html ng-app="myApp">
),你可以修改<head>
中的所有属性。这允许您为每个页面动态设置机器人 <meta>
。您可以使用根模块中的 $routeChangeSuccess 事件来做到这一点。如果您使用 ui-router,您可以在路由上设置一个 'data' 属性,您可以在每次状态更改时读取该路由。您也可以使用 $rootScope 从其他模块更新这个值,但这不是一个好的做法。最好的方法是从子 controllers/directives 向根模块广播更改。
我有一个动态更改页面 <title>
的示例,但它有点复杂,因为此应用程序是手动引导的。但是,假设 <html>
标签上有一个 ng-app="" 和 ng-controller="" 指令。
这是 <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}}">
.