Javascript 防止Google索引AngularJS路由

Javascript 防止Google索引AngularJS路由,javascript,html,angularjs,seo,robots.txt,Javascript,Html,Angularjs,Seo,Robots.txt,通常,如果我不希望谷歌抓取页面,我会将页面添加到robots.txt文件中,如下所示: User-agent: * Disallow: /my-page 为了防止Google索引该页面,我将从我的sitemap.xml中删除该页面,并在该页面的中添加以下元标记: <meta name="robots" content="noindex"> 现在,如果我使用AngularJS处理单个页面应用程序的所有路由,如何停止Google索引和/或对路由进行爬网?Angular在ng视图中

通常,如果我不希望谷歌抓取页面,我会将页面添加到robots.txt文件中,如下所示:

User-agent: *
Disallow: /my-page
为了防止Google索引该页面,我将从我的
sitemap.xml
中删除该页面,并在该页面的
中添加以下元标记:

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


现在,如果我使用AngularJS处理单个页面应用程序的所有路由,如何停止Google索引和/或对路由进行爬网?Angular在ng视图中为每个路由提供内容,因此
中的信息在每个路由上保持不变。在这种情况下,我不认为我可以添加meta标记。

如果您的根模块被放置在
标记(
)上,您可以修改
中的所有属性。这允许您为每个页面动态设置robots
。您可以通过根模块中的事件来实现这一点。如果您使用的是ui路由器,您可以在路由上设置一个“数据”属性,您可以在每次状态更改时读取该属性。您也可以使用$rootScope从其他模块更新此值,但这不是一个好的做法。最好的方法是从子控制器/指令广播对根模块的更改

我有一个动态更改页面
的示例,但是它有点复杂,因为这个应用程序是手动引导的。但是,假设在
标签上有一个ng app=“”和ng controller=“”指令

以下是状态更改事件:

以下是广播的收听者:

以下是广播的触发方式:

以下是
绑定:


但是,Google并不擅长读取这些属性,因此您必须使用预渲染服务来确保Google机器人将解析
,而不是像

这样的内容。谢谢。我的应用程序已经为SEO进行了预渲染,我总是将根模块放在html标记上,这样应该可以正常工作。